subprocess.check_output()返回代码

时间:2014-09-09 16:51:48

标签: python subprocess psexec

我正在使用subprocess.check_output()通过Sysinternals PSExec在远程机器上执行一些命令。我遇到的问题是,如果命令给出非零返回码,check_output()会引发CalledProcessError。

PSExec将创建的进程的PID作为其返回代码,所以很明显我每次都会收到错误。有没有办法可以覆盖此错误并仍然检查psexec调用的输出?基本上我只需要查看输出,即使它的返回码非零。

谢谢!

1 个答案:

答案 0 :(得分:5)

the docs

  

如果退出代码非零,则会引发CalledProcessError。该   CalledProcessError对象将在返回码中包含返回码   输出属性中的属性和输出。


try:
    output = subprocess.check_output([...], stderr=subprocess.STDOUT)
except subprocess.CalledProcessError as err:
    return_code = err.returncode
    output = err.output