我在Windows Server 2008 R2 x64机箱上使用Python 2.7.1
。Python:从命令行获取输出,该命令行以非零退出代码退出
我想获得输出我需要的信息后给出非零退出状态的命令行进程的输出。
我最初使用的是subprocess.check_output
,并捕获了非零退出状态下发生的CalledProcessError,但是当返回代码存储在错误中时,没有输出显示这一点。
运行这种情况下,给出输出,但退出状态为0正常工作,我可以得到输出使用subprocess.check_output。
我的假设是输出被写入STDOUT,但异常从STDERR中提取其'输出'。我试着重新实现check_output的功能,但是当我相信我应该看到输出到STDOUT和STDERR时,输出仍然没有任何结果。我当前的代码如下(其中“命令”是全文,包括参数,命令我运行:
process = subprocess.Popen(command, stdout=subprocess.PIPE,
stderr=subprocess.STDOUT, universal_newlines=True)
output = process.communicate()
retcode = process.poll()
if retcode:
raise subprocess.CalledProcessError(retcode, image_check, output=output)
return output
这使我在可变输出如下:
是我subprocess.Popen
代码纠正?
``.communicate()`之后,你可以直接使用`process.returncode`而不是`process.poll()`。 – jfs 2013-08-20 10:48:15
如何从Python的命令行获得输出:http://stackoverflow.com/a/20456745/445131 – 2013-12-08 17:53:29