如何根据相对路径导入Python模块?
例如,如果dirFoo包含Foo.py和dirBar,和dirBar包含Bar.py,我怎么导入Bar.py到Foo.py?
这是一个直观的表示:
dirFoo\
Foo.py
dirBar\
Bar.py
Run Code Online (Sandbox Code Playgroud)
Foo希望包括Bar,但重组文件夹层次结构不是一种选择.
我正在尝试使用扩展方法向C#StringBuilder类添加一个operater重载.具体来说,给定StringBuilder sb,我想sb += "text"成为等同于sb.Append("text").
以下是为以下内容创建扩展方法的语法StringBuilder:
public static class sbExtensions
{
public static StringBuilder blah(this StringBuilder sb)
{
return sb;
}
}
Run Code Online (Sandbox Code Playgroud)
它成功地将blah扩展方法添加到了StringBuilder.
不幸的是,运算符重载似乎不起作用:
public static class sbExtensions
{
public static StringBuilder operator +(this StringBuilder sb, string s)
{
return sb.Append(s);
}
}
Run Code Online (Sandbox Code Playgroud)
除其他问题外,this在此上下文中不允许使用关键字.
是否可以通过扩展方法添加运算符重载?如果是这样,那么正确的方法是什么?
我有一个应用程序,一次只能打开一个自己的实例.为了强制执行此操作,我使用以下代码:
System.Diagnostics.Process[] myProcesses = System.Diagnostics.Process.GetProcesses();
System.Diagnostics.Process me = System.Diagnostics.Process.GetCurrentProcess();
foreach (System.Diagnostics.Process p in myProcesses)
{
if (p.ProcessName == me.ProcessName)
if (p.Id != me.Id)
{
//if already running, abort this copy.
return;
}
}
//launch the application.
//...
Run Code Online (Sandbox Code Playgroud)
它工作正常.我还希望它能够集中已经运行的副本的形式.也就是说,在返回之前,我想将此应用程序的其他实例置于前台.
我怎么做?
Re:SetForeGroundWindow:
SetForeGroundWindow工作,到一点:
[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern bool SetForegroundWindow(IntPtr hWnd);
//...
if (p.Id != me.Id)
{
//if already running, focus it, and then abort this copy.
SetForegroundWindow(p.MainWindowHandle);
return;
}
//...
Run Code Online (Sandbox Code Playgroud)
如果窗口没有最小化,这会将窗口置于前台.真棒.但是,如果窗口IS最小化,它将保持最小化.
它需要取消最小化.
通过SwitchToThisWindow解决方案(Works!):
[System.Runtime.InteropServices.DllImport("user32.dll")]
public static extern void SwitchToThisWindow(IntPtr hWnd, bool fAltTab); …Run Code Online (Sandbox Code Playgroud) 为了论证,我怎么能在VB中这样做?
foreach foo in bar
{
if (foo == null)
break;
if (foo = "sample")
continue;
// More code
//...
}
Run Code Online (Sandbox Code Playgroud) 我最近发现LEFT JOIN的ON子句可能包含诸如(1 = 1)之类的值.
这令我很沮丧,因为它打破了我对连接功能的看法.
我遇到了以下情况的更精细版本:
SELECT DISTINCT Person.ID, ...
FROM Person LEFT JOIN Manager
ON (Manager.ID = Person.ID OR Manager.ID = -1))
WHERE (...)
Run Code Online (Sandbox Code Playgroud)
这完全合法.如果有的话,"Manager.ID = -1"会完成什么?这怎么会影响加入?
让我们来sEncodedHref代表一个HttpUtility.HtmlAttributeEncode(..)'d字符串.
生成的html之间是否有任何功能差异,如下所示:
String.Format(@"<span class='blue' src='{0}'>", sEncodedHref);
Run Code Online (Sandbox Code Playgroud)
与生成的HTML这样:
String.Format(@"<span class=""blue"" src=""{0}"">", sEncodedHref);
Run Code Online (Sandbox Code Playgroud)
我一直认为单引号变体既不受支持也不太"安全",但我无法提供支持该论点的理由.