使用check_output获取输出,即使退出状态为非零

时间:2017-03-06 14:42:05

标签: 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"])

1 个答案:

答案 0 :(得分:5)

根据docs.output例外的CalledProcessError属性中提供了输出。

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

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