You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何捕获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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 22:42:32