[英]how to capture error from python's subprocess.run, while using timeout
我不知道如何使用 python 的 subprocess.run 來捕獲 stdout、stderr 和 exitcode ......以及其他任何可以捕獲的東西。 我還必須使用超時選項,因為我正在運行的數千個命令中的一些命令會掛起,即無休止地運行。 我敢打賭我錯過了一些明顯的東西,我道歉。 我已經花了幾天的時間,無法弄清楚。
您能給我的任何幫助將不勝感激。
這是我有缺陷的代碼:
seconds = timeout
try:
proc = subprocess.run(cmd, capture_output=True, timeout=seconds)
except subprocess.TimeoutExpired:
print('This process ran too long:\n' + cmd + '\n')
out, err = proc.communicate()
exitcode = proc.returncode
if len(out) == 0: out="''"
if len(err) == 0: err="''"
#
return exitcode, out, err
您快到了。 代替
out, err = proc.communicate()
用
out, err = proc.stdout, proc.stderr
關於您的 except 子句,我不確定您是否能夠在超時后獲得 stdout、stderr 和 returncode。 給它一個檢查。 如果沒有,那么請考慮在您的 except 子句中使用return "", "", 1
或類似的內容。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.