首先,试图使您摆脱聪明的黑客。设计一个单独的快捷方式来从Explorer运行是非常合适的,该快捷方式与要在命令行中使用的脚本所做的功能稍有不同(例如,保持控制台处于打开状态)。正如Alex所指出的那样,在nix上这不是问题,正确的做法始终是干净地退出,否则您的用户会抱怨。
如果仍然需要解决方法,可以使用以下代码来检测何时需要阻止控制台关闭,这是相当干净的。需要Windows 2000或更高版本,此功能包含逻辑:
def owns_console():
wnd = GetConsoleWindow()
if wnd is None:
return False
return GetCurrentProcessId() == GetWindowThreadProcessId(wnd)
基本上,它获取拥有Python正在使用的控制台的进程以及我们的进程的PID。如果它们相同,那么当我们退出控制台时,控制台将消失,因此需要保持打开状态。如果它们不同,或者没有连接任何控制台,则Python应该正常退出。