在不打开终端的情况下运行Shell命令
使用 subprocess.call
或 subprocess.Popen
来执行命令时,会看到一个命令行窗口快速出现又消失。
那么,有什么办法可以在不显示这个命令行窗口的情况下运行命令呢?
1 个回答
25
我想你的观察可能只限于Windows系统,因为我认为只有在这个平台上你才会遇到“控制台闪烁”的问题。如果真是这样的话,文档中有一段半有用的说明:
如果提供了startupinfo和creationflags,它们会被传递给底层的CreateProcess()函数。它们可以指定一些内容,比如主窗口的外观和新进程的优先级。(仅限Windows)
不幸的是,Python的在线文档没有包含Windows API文档中相关的部分,所以你需要在其他地方找到这些信息,比如从这里开始,接着可以找到这里的creationflags
,具体来说是:
CREATE_NO_WINDOW
0x08000000
这个进程是一个控制台应用程序,但没有控制台窗口运行。因此,应用程序的控制台句柄没有设置。
所以,在你的Popen
调用中添加creationflags=0x08000000
应该会有所帮助(不幸的是,我没有Windows机器可以试这个,所以你得自己试试看)。