我正在使用subprocess.check_output()通过Sysinternals PSExec在远程机器上执行一些命令。我遇到的问题是,如果命令给出非零返回码,check_output()会引发CalledProcessError。
PSExec将创建的进程的PID作为其返回代码,所以很明显我每次都会收到错误。有没有办法可以覆盖此错误并仍然检查psexec调用的输出?基本上我只需要查看输出,即使它的返回码非零。
谢谢!
答案 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