我在我的脚本中多次使用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"])
答案 0 :(得分:5)
根据docs,.output
例外的CalledProcessError
属性中提供了输出。
所以这样的事情应该有效:
try:
result = subprocess.check_output(...).stdout
except subprocess.CalledProcessError as exc:
result = exc.output