我在用Python 2.7.1
在 Windows Server 2008 R2 x64 机器上。
我正在尝试获取命令行进程的输出,该进程在输出我需要的信息后给出非零退出状态。
我最初使用的是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
这在变量输出中给出了以下内容:[('', None)]
Is my subprocess.Popen
代码正确吗?