2010-05-29 135 views
6

使用subprocess.callsubprocess.Popen,执行shell命令会使shell窗口快速出现并消失。在没有shell窗口的情况下运行shell命令

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

+1

什么平台? (听起来像Windows) – 2010-05-29 16:05:45

+0

相关:[我如何隐藏控制台,当我使用os.system()或subprocess.call()?](http://stackoverflow.com/q/7006238/4279) – jfs 2014-05-22 00:34:58

回答

23

我想你的观察仅限于Windows,因为我相信这是唯一一个你会得到“控制台闪存”问题的平台。如果是这样,那么docs提供以下半段有所帮助:

的STARTUPINFO和creationflags,如果给 ,将被传递给底层 CreateProcess()函数。 他们可以指定诸如 外观的主窗口和 优先级为新进程。 (视窗 只)

不幸的是Python的在线文档不再现Windows的API文档的相关部分,所以你必须在其他地方找到的,例如MSDN上开始here导致你herecreationflags,并且具体地

CREATE_NO_WINDOW 
0x08000000 

过程是一个控制台应用程序 是正在运行没有一个控制台 窗口。因此,应用程序的控制台句柄 未设置。

因此,增加creationflags=0x08000000Popen调用应该帮助(可惜我没有在其上尝试了这一点,所以你必须自己尝试一下Windows的跑步机)。

+0

谢谢你快速回答! – 2010-05-29 16:28:14

+0

在Windows机器上验证。谢谢! – 2011-10-20 06:32:44

+0

非常好,这个作品! – ChristopheD 2011-12-06 12:37:58