在不打开终端的情况下运行Shell命令

8 投票
1 回答
4116 浏览
提问于 2025-04-15 23:19

使用 subprocess.callsubprocess.Popen 来执行命令时,会看到一个命令行窗口快速出现又消失。

那么,有什么办法可以在不显示这个命令行窗口的情况下运行命令呢?

1 个回答

25

我想你的观察可能只限于Windows系统,因为我认为只有在这个平台上你才会遇到“控制台闪烁”的问题。如果真是这样的话,文档中有一段半有用的说明:

如果提供了startupinfo和creationflags,它们会被传递给底层的CreateProcess()函数。它们可以指定一些内容,比如主窗口的外观和新进程的优先级。(仅限Windows)

不幸的是,Python的在线文档没有包含Windows API文档中相关的部分,所以你需要在其他地方找到这些信息,比如从这里开始,接着可以找到这里creationflags,具体来说是:

CREATE_NO_WINDOW
0x08000000

这个进程是一个控制台应用程序,但没有控制台窗口运行。因此,应用程序的控制台句柄没有设置。

所以,在你的Popen调用中添加creationflags=0x08000000应该会有所帮助(不幸的是,我没有Windows机器可以试这个,所以你得自己试试看)。

撰写回答