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

boo*_*ull 4 python subprocess return-code python-3.x output

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

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

subprocess.CalledProcessError: Command '['openvpn', '--help']' returned non-zero exit status 1
Run Code Online (Sandbox Code Playgroud)

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

编辑:我使用完全相同的代码--show-digests或其他参数,似乎一切正常.

output = check_output(["openvpn", "--show-digests"])
Run Code Online (Sandbox Code Playgroud)

Eth*_*man 6

根据文档,输出.outputCalledProcessError异常的属性中可用.

所以像这样的东西应该工作:

try:
    result = subprocess.check_output(...).stdout
except subprocess.CalledProcessError as exc:
    result = exc.output
Run Code Online (Sandbox Code Playgroud)