2010-07-14 66 views
2

我有一個python腳本,它應該調用一個.exe文件來獲得一些結果。該.exe文件正在調用一個新的Windows命令提示符(shell)。我不需要.exe文件的任何輸出。停止調用新的Shell/cmd提示符,python

我在我的腳本中使用 os.system('segwin.exe args'),其中segwin是一個可執行文件。

現在我的問題是:我需要停下來調用命令提示符

榮譽給所有

下垂

+0

請參閱[this](http://stackoverflow.com/questions/507347/hide-command-window-of-bat-file-that-executes-another-exe-file)問題。 – compie 2010-07-14 06:33:25

回答

1

試試這個(未經測試):

import subprocess 
CREATE_NO_WINDOW = 0x08000000 
args = [...] 
subprocess.check_call(["segwin.exe"] + args, creationflags=CREATE_NO_WINDOW) 

注意check_call檢查啓動子的返回代碼,並拋出一個異常,如果它是非零。如果您不想要,請使用call

通常,請儘量避免os.system()並使用subprocess模塊。 os.system()總是啓動一個shell,在大多數情況下這是不需要移植的。

+0

是的,這是完美的工作 但是, segwin.exe成功返回1,導致通過check_all()引發CalledProcessError。我現在應該怎麼做:( – sag 2010-07-14 07:23:07

+0

三江源這麼多,我已經使用()調用,問題就解決了...... ürockz人 下垂 – sag 2010-07-14 07:31:56

+0

爲完整起見,我就加一記'check_call' 。 – Philipp 2010-07-14 07:35:30

0

這實際上是特定於Windows。 Windows已決定segwin.exe是基於控制檯的應用程序(使用Windows C界面中的控制檯子系統)。

我知道如何調用不需要的應用程序的提示,但不是相反,您可以嘗試使用thisthis