繁体   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