2010-05-29 202 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

相關問題