subprocess.check_output() 返回代码

0 投票
1 回答
3724 浏览
提问于 2025-04-20 17:05

我正在使用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

撰写回答