2017-03-02 156 views
1

我的目標是運行一個文件,返回其狀態(如果成功則返回0)並返回其輸出。我正在使用os模塊來獲得運行模擬的狀態。運行批處理文件的返回

status= os.system("file") 

而我正在使用subprocess模塊​​有輸出。

output=subprocess.check_output("file") 

我的問題:是否有任何功能,使我有兩個狀態和輸出沒有運行我的文件兩次?

+0

對於windows,你可以通過檢查'%errorlevel%'系統變量'os.system()' –

+2

'subprocess.Popen'來檢查你的狀態。 ('wait()'用於返回狀態,'stdout'用於輸出。這裏有很多例子。 –

回答

1

check_output已經做好了你需要的一切。從該文檔:

subprocess.check_output(參數,*,標準輸入=無,標準錯誤=無,殼=假, universal_newlines =假)運行命令參數和返回其 輸出作爲字節串。

如果返回碼非零,則會引發CalledProcessError。該 CalledProcessError對象將在返回碼 屬性返回代碼和輸出任何輸出屬性

所以,如果一切正常,它只是返回的輸出。否則,會出現一個異常,其中包含確切的返回碼以及直到被調用進程錯誤的部分輸出。