我用 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/