gpt4 book ai didi

Python 子进程抑制 stdout 和 stderr

转载 作者:行者123 更新时间:2023-12-01 04:54:02 24 4
gpt4 key购买 nike

我使用子进程模块调用外部二进制文件:

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

check_output 运行时以及在 except 语句中都会输出错误。我真正想要的是仅在捕获异常时打印输出。因此这意味着我希望在异常对象中包含 stderr。

问题是,如果我抑制标准输出:

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

然后e.output肯定会变成空。我还尝试将 stderr 设置为 None - 效果相同。

如何将 stderr 添加到 subprocess.CalledProcessError 实例,而不将 stderr 重定向到 stdout,因为我不这样做根本需要stdout

最佳答案

check_output 是一个功能有限的便捷函数。如果它不能满足您的要求,请自行推出:

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

关于Python 子进程抑制 stdout 和 stderr,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27831221/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com