在没有 shell 窗口的情况下运行 shell 命令

8

使用 subprocess.callsubprocess.Popen 执行 shell 命令会使一个 shell 窗口快速出现并消失。

如何在没有 shell 窗口的情况下运行 shell 命令?


1
什么平台?(听起来像Windows。) - Roger Pate
如何在使用 os.system() 或 subprocess.call() 时隐藏控制台? - jfs
1个回答

25

我想你的观察仅限于Windows,因为我相信这是唯一一个会出现“控制台闪烁”问题的平台。如果是这样的话,那么文档提供了以下半有用的段落:

startupinfo和creationflags(如果已提供)将被传递给底层的CreateProcess()函数。它们可以指定诸如主窗口的外观和新进程的优先级等内容。(仅适用于Windows)

不幸的是,Python在线文档没有复制Windows API文档的相关部分,因此您必须在其他位置找到它们,例如在MSDN上从这里开始,然后导航至这里获取creationflags,并具体参考:

CREATE_NO_WINDOW
0x08000000

该进程是一个控制台应用程序, 在没有控制台窗口的情况下运行。 因此,该应用程序的控制台句柄未设置。

因此,在您的Popen调用中添加creationflags=0x08000000应该有所帮助(不幸的是,我没有Windows运行的机器来尝试这个方法,所以您需要自己尝试)。


在 Windows 机器上验证。谢谢! - Mike Ottum

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接