如何基于文本文件中的内容按顺序执行Python脚本
按指定顺序执行Python脚本的正确实现
你的代码存在几个关键问题:
- 函数内直接写
Script1.py是无效语法,Python无法识别该指令 - 命令字典的键是
Script1这类不带.py的名称,但文本文件中的条目是Script1.py,运行时会触发KeyError - 写法扩展性极差,新增脚本必须手动修改主代码,完全没必要
下面提供两种实用的实现方式:
方法1:直接加载脚本代码执行(适合简单场景)
这种方式会将目标脚本的代码读取到当前进程中执行,适用于脚本间无需环境隔离的情况:
with open('test.txt', 'r') as cmd_file: for line in cmd_file: script_path = line.strip() if not script_path: # 跳过空行 continue try: with open(script_path, 'r') as f: exec(f.read()) except FileNotFoundError: print(f"错误:找不到脚本文件 {script_path}") except Exception as err: print(f"执行 {script_path} 时出错:{err}")
方法2:用subprocess启动独立进程执行(推荐生产场景)
这种方式会启动单独的Python进程运行目标脚本,避免不同脚本的变量、环境互相干扰,还能捕获脚本的输出信息:
import subprocess import sys with open('test.txt', 'r') as cmd_file: for line in cmd_file: script_path = line.strip() if not script_path: continue try: # 调用当前环境的Python解释器执行脚本 proc = subprocess.run( [sys.executable, script_path], check=True, capture_output=True, text=True ) # 打印脚本的正常输出(不需要可删除) print(proc.stdout) except subprocess.CalledProcessError as err: print(f"{script_path} 执行失败,错误信息:{err.stderr}") except FileNotFoundError: print(f"错误:找不到脚本文件 {script_path}")
额外说明
- 两种方法都处理了文本文件中的空行,避免因空行触发报错
- 加入异常处理逻辑,单个脚本执行失败不会导致主脚本终止
subprocess方式更安全,当脚本间存在依赖冲突或需要严格隔离时优先使用
内容的提问来源于stack exchange,提问作者Adrian Serbanescu
相关产品推荐
相关产品推荐

