subprocess.check_output() 返回代码
我正在使用subprocess.check_output()来通过Sysinternals的PSExec在远程机器上执行一些命令。现在遇到的问题是,如果命令返回的结果不是零,check_output()就会报错,提示CalledProcessError。
PSExec返回的是创建的进程的PID(进程ID),所以每次我执行命令时都会出现错误。有没有办法让我忽略这个错误,仍然能查看psexec调用的输出呢?基本上,我只需要看到输出,即使它的返回码不是零。
谢谢!
1 个回答
5
根据文档的说明:
如果程序的退出代码不是零,就会抛出一个叫做CalledProcessError的错误。这个CalledProcessError对象会有两个属性,一个是returncode,里面存的是返回的代码;另一个是output,里面存的是输出的内容。
try:
output = subprocess.check_output([...], stderr=subprocess.STDOUT)
except subprocess.CalledProcessError as err:
return_code = err.returncode
output = err.output