python - 即使退出状态非零,也使用 check_output 获取输出

标签 python python-3.x subprocess output return-code

我用 subprocess.check_output在我的脚本中多次出现,但我遇到了外部应用程序的问题。 OpenVPN在这种情况下。

当使用 --help 调用 openvpn 时参数,我想在我的脚本中解析它,它返回 1作为其退出代码。 check_ouput在非零退出代码上窒息并失败并显示以下消息:

subprocess.CalledProcessError: Command '['openvpn', '--help']' returned non-zero exit status 1

问:我不明白为什么 openvpn 会这样做,但我怎么能拥有 check_output给我输出,即使返回码不为零?

编辑:我使用了与 --show-digests 完全相同的代码或其他参数,一切似乎都很好。
output = check_output(["openvpn", "--show-digests"])

最佳答案

根据docs输出在 .output 中可用CalledProcessError 的属性异常(exception)。

所以这样的事情应该有效:

try:
    result = subprocess.check_output(...).stdout
except subprocess.CalledProcessError as exc:
    result = exc.output

关于python - 即使退出状态非零,也使用 check_output 获取输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42628415/

相关文章:

Python:在后台运行带重定向的bash命令并获取进程ID

python - 如何遍历字典

python - 如何在python的类成员函数上打断点?

python - 在 Python 2.7 中将字符串更改为字节类型

python-3.x - 在 python 中创建子图 plotly

python - FileNotFoundError:[WinError 2]尝试使用pysndfx时,系统找不到指定的文件

python - 记录 python 子进程的语法错误和未捕获的异常并将它们打印到终端

python - Pygame:Sprite 动画理论 - 需要反馈

python - 虚拟环境中的 Pip 升级访问被拒绝

python - 如何使用 python 日志记录模块打印多行日志?