python3 捕获执行cmd命令行的异常,如果命令行失败再次执行cmd命令,还是失败则输出报错
时间: 2024-12-16 10:30:52 浏览: 10
在Python 3中,你可以使用`subprocess`模块来执行系统命令(CMD命令),同时通过try-except结构捕获可能出现的异常,如`subprocess.CalledProcessError`。以下是示例代码:
```python
import subprocess
def run_command_with_retry(command, max_retries=3):
for i in range(max_retries + 1): # 连续尝试次数包括第一次
try:
output = subprocess.check_output(command, shell=True, stderr=subprocess.STDOUT)
print(f"Command executed successfully: {output.decode('utf-8')}")
break
except subprocess.CalledProcessError as e:
if i == max_retries:
print(f"Command '{command}' failed after {max_retries} retries:")
print(f"Return code: {e.returncode}\nError message: {e.output.decode('utf-8')}")
else:
print(f"Command '{command}' failed, retrying... ({i+1}/{max_retries})")
# 使用函数
run_command_with_retry("your_cmd_here", 5) # 尝试最多5次
```
在这个例子中,我们首先尝试执行命令,如果命令失败(返回非零状态码),我们会捕获到`CalledProcessError`异常,并根据剩余的重试次数决定是否继续执行。如果达到最大重试次数,就打印出详细的错误信息。
阅读全文