如何捕獲調用語句的stdout和stderr,我有以下命令但我不確定它是否成功?任何人都可以提供輸入嗎?如何捕獲調用狀態的stdout和stderr
call("export COMMANDER_SERVER=commander.company.com" ,shell=True)
如何捕獲調用語句的stdout和stderr,我有以下命令但我不確定它是否成功?任何人都可以提供輸入嗎?如何捕獲調用狀態的stdout和stderr
call("export COMMANDER_SERVER=commander.company.com" ,shell=True)
您可以使用幾乎任何方法subprocess
但需要連接管道。一個簡單的方法是在文檔:
>>> subprocess.check_output(
... "ls non_existent_file; exit 0",
... stderr=subprocess.STDOUT,
... shell=True)
'ls: non_existent_file: No such file or directory\n'
該文檔還表示,以下有關subprocess.call
:
注意
不要使用標準輸出=管或標準錯誤= PIPE使用此功能因爲這可能會基於子進程輸出量而死鎖。當需要管道時,使用Popen和communications()方法。
我認爲你正在尋找stdout=subprocess.PIPE
正確的做法是創建一個Popen對象。例如:
from subprocess import Popen, PIPE
proc = Popen('command arg --option', stdout=PIPE, stderr=PIPE, shell=True)
return_code = proc.wait()
stdout, stderr = proc.communicate()
print(stdout if return_code==0 else stderr)
您可以在Python docs中找到更多關於Popen物體的信息。