如何捕获Python脚本中运行的批处理文件错误并终止脚本
解决Python调用批处理出错后继续运行的问题
方法1:检查os.system的返回值
os.system会返回被调用命令的退出码,Windows下批处理用exit /b 1退出时,os.system会返回对应的非0值(通常就是1)。你可以每次调用后检查返回值,非0就终止Python脚本:
import os import sys # 调用批处理并获取退出码 exit_code = os.system("your_batch_file.bat") # 判断是否执行失败 if exit_code != 0: print(f"批处理执行失败,退出码:{exit_code}") sys.exit(exit_code) # 后续的批处理调用同理 exit_code = os.system("another_batch.bat") if exit_code != 0: print(f"批处理执行失败,退出码:{exit_code}") sys.exit(exit_code)
嫌重复写判断麻烦的话,可以封装成一个函数:
import os import sys def execute_batch(batch_path): exit_code = os.system(batch_path) if exit_code != 0: print(f"批处理[{batch_path}]执行失败,退出码:{exit_code}") sys.exit(exit_code) # 直接调用函数即可 execute_batch("first.bat") execute_batch("second.bat")
方法2:用subprocess模块(推荐)
subprocess是Python官方推荐的替代os.system的模块,功能更灵活,处理错误也更直观。可以用subprocess.run并设置check=True,这样批处理执行失败时会直接抛出CalledProcessError异常,终止脚本:
import subprocess # 只要批处理返回非0,就会抛出异常并终止脚本 subprocess.run(["your_batch_file.bat"], check=True) subprocess.run(["another_batch.bat"], check=True)
如果需要自定义错误提示,可以捕获异常:
import subprocess import sys try: subprocess.run(["your_batch_file.bat"], check=True) subprocess.run(["another_batch.bat"], check=True) except subprocess.CalledProcessError as err: print(f"批处理执行出错:{err.cmd} 返回退出码 {err.returncode}") sys.exit(err.returncode)
内容的提问来源于stack exchange,提问作者Cecilia
相关产品推荐
相关产品推荐

