在Python中,如果你使用`subprocess`模块执行外部命令,并且希望处理命令返回的非零状态码,你可以按照以下步骤进行:
1. 使用`subprocess.run`或`subprocess.Popen`执行命令。
2. 捕获命令执行过程中可能发生的异常。
3. 检查命令的返回状态码(`returncode`)。
4. 如果返回状态码非零,则输出错误信息。
下面是一个使用`subprocess.run`的示例代码:
import subprocess
def run_command(command):
try:
执行命令
result = subprocess.run(command, shell=True, capture_output=True, text=True)
获取返回状态码和错误信息
return result.returncode, result.stderr
except Exception as e:
发生异常时返回错误信息
return -1, str(e)
示例命令
command = "ls -l"
return_code, error_message = run_command(command)
if return_code == 0:
print("命令执行成功")
else:
print(f"命令执行失败,错误信息:{error_message}")
如果你需要更详细的错误处理,可以使用`subprocess.Popen`,如下所示:
import subprocess
def run_command(command):
try:
创建子进程
p = subprocess.Popen(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, shell=True)
获取输出和错误消息
output, error = p.communicate()
检查返回状态码
if p.returncode != 0:
print(f"Error: Command failed with return code {p.returncode}")
print(f"Error message: {error.decode()}")
return p.returncode, error.decode()
except Exception as e:
发生异常时返回错误信息
return -1, str(e)
示例命令
command = "ls -l"
return_code, error_message = run_command(command)
if return_code == 0:
print("命令执行成功")
else:
print(f"命令执行失败,错误信息:{error_message}")
请确保你的命令是正确的,并且已经考虑了所有可能的错误情况。如果命令执行失败,通常错误信息会给出失败的原因,你可以根据这些信息进行相应的错误处理。