簡體   English   中英

Python子進程抑制stdout和stderr

[英]Python subprocess supress stdout and stderr

我使用 subprocess 模塊調用外部二進制文件:

try:
    subprocess.check_output([param1, param2], stderr=subprocess.STDOUT)
except subprocess.CalledProcessError as e:
    print(e.output)

這在check_output運行時和在 except 語句中都會輸出錯誤。 我真正想要的是僅在捕獲異常時才打印輸出。 所以這意味着我想在異常對象中有標准錯誤。

問題是,如果我抑制標准輸出:

subprocess.check_output(..., stdout=open(sys.os.devnull, 'wb'))

然后e.output肯定會變空。 我還嘗試將 stderr 設置為 None - 效果相同。

如何在不將stderr重定向到stdout的情況下將stderr添加到subprocess.CalledProcessError實例,因為我根本不需要stdout

check_output是功能有限的便捷功能。 如果它不能滿足您的要求,請自己動手:

proc = subprocess.Popen([param1, param2],
    stderr=subprocess.PIPE)
out, err = proc.communicate()
if proc.returncode != 0:
    print(err)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM