1
我必須寫一個Python代碼爲我的生產服務器,因此嘗試通過一個例子來清除我的概念。 Python腳本必須調用並執行bash shell腳本 - shell腳本可能會轉儲大量消息並退出成功或退出(2)系統調用。因此,我通過以下方法嘗試:獲取獨立的變量stderr和標準輸出與退出狀態
import subprocess
try:
output = subprocess.check_output(
'bash mytest',
shell=True,
stderr=subprocess.STDOUT,
)
print 'Have %d bytes in output' % len(output)
print output
except subprocess.CalledProcessError, e:
print "Error String:", e.output
print "Error Return code:", e.returncode
的代碼工作正常,但它是調用鑑於該腳本可以(使用echo)打印數百行的正確途徑。
將輸出變量兼得stderr和標準輸出消息通過bash腳本印?我可以在單獨的變量中獲得bash腳本的stderr和stdout消息 - 請記住,如果腳本成功運行,可能根本沒有任何stderr消息?
此外,我應該承擔的情況下,異常subprocess.CalledProcessError沒有拋出的返回碼0(成功)?
是否有實現相同的一個更好的辦法 - 將這種方法確保Python腳本會等到bash腳本的完成?
在此先感謝。
請閱讀[本教程(https://pymotw.com/2/subprocess/)上PMOTW – Pynchia
和[此SO Q&A]( http://stackoverflow.com/questions/5631624/how-to-get-exit-code-when-using-python-subprocess-communicate-method) – Pynchia