如何获取shell调用的状态码?

时间:2016-12-14 13:03:42

标签: python python-2.7 windows-7

我有以下命令:

import subprocess

proc = subprocess.Popen(["shutdown", "/m", r"\\<some comp name>", "/s", "/f"], stdout=subprocess.PIPE, shell=True)

如何获取命令的状态代码,例如,如果计算机不存在,它将输出<comp name> the entered computer name is not valid... talk to y our admin(53)行的内容,我想要做的是获取命令的退出代码,如果它输出yes如果它没有输出no,我怎样才能得到命令的状态代码?

1 个答案:

答案 0 :(得分:2)

直截了当的方式,作为标准错误输出的奖励重定向/合并(在错误的情况下通常很有趣):

proc = subprocess.Popen(["shutdown", "/m", r"\\<some comp name>", "/s", "/f"], stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
output = proc.stdout.read()
return_code = proc.wait()

(请注意,我删除了shell=True选项,因为您未在命令中使用shell功能,因此无法使用,如果可以,请保持这种状态

编辑:在回答之前检查重复一段时间,但使用Popenhttps://stackoverflow.com/search?q=subprocess+get+output+return+code)无法找到完全匹配/简单示例