如何运行不同路径的多个Python脚本并将结果保存至脚本所在目录?
如何将多脚本运行结果保存到各自所在文件夹
当然可以实现这个需求!你只需要在运行每个子脚本时,将输出重定向到对应脚本所在目录的文件中就行。下面给你两种实用的方案,你可以根据自己的偏好选择:
方法1:使用os.system配合输出重定向
这种方法是在你现有代码的基础上修改,通过命令行的输出重定向语法,把脚本的标准输出和错误输出都保存到目标文件里。
import os def run_script_and_save_output(script_path): # 提取脚本所在的目录路径 script_dir = os.path.dirname(script_path) # 提取脚本的文件名(去掉后缀) script_name = os.path.splitext(os.path.basename(script_path))[0] # 构造输出文件的完整路径(和脚本同目录) output_file = os.path.join(script_dir, f"{script_name}_output.txt") print(f"Starting {script_name}") # 构造命令:运行脚本并将所有输出(包括错误)重定向到文件 # > 表示覆盖文件内容,换成 >> 可以追加内容 command = f'python "{script_path}" > "{output_file}" 2>&1' os.system(command) print(f"{script_name} ended, output saved to {output_file}") # 逐个调用函数运行脚本 run_script_and_save_output(r"D:\python\test\tableta_wi_fi_tot.py") run_script_and_save_output(r"D:\python\test\tasatura_fara_fir_noutati.py") run_script_and_save_output(r"D:\python\test\x\mouse_pad_tot.py")
关键说明:
2>&1是命令行语法,意思是把错误输出(stderr)重定向到标准输出(stdout)的同一个文件,这样脚本运行时的所有信息(包括报错)都会被保存- 如果需要追加输出而不是每次覆盖文件,把命令里的
>改成>>即可
方法2:使用subprocess模块(更推荐)
subprocess 是Python官方推荐的替代os.system的模块,它提供了更强大的进程控制能力,也更安全、跨平台。
import os import subprocess def run_script_and_save_output(script_path): script_dir = os.path.dirname(script_path) script_name = os.path.splitext(os.path.basename(script_path))[0] output_file = os.path.join(script_dir, f"{script_name}_output.txt") print(f"Starting {script_name}") # 打开输出文件,以写入模式(换成"a"就是追加模式) with open(output_file, "w", encoding="utf-8") as f: # 运行脚本,将stdout和stderr都写入文件 result = subprocess.run( ["python", script_path], stdout=f, stderr=subprocess.STDOUT, cwd=script_dir # 可选:让子脚本在自己的目录下运行,方便读取同目录的文件 ) # 根据返回码判断脚本是否成功运行 if result.returncode == 0: print(f"{script_name} ended successfully, output saved to {output_file}") else: print(f"{script_name} ended with error (code {result.returncode}), check {output_file} for details") # 运行所有目标脚本 run_script_and_save_output(r"D:\python\test\tableta_wi_fi_tot.py") run_script_and_save_output(r"D:\python\test\tasatura_fara_fir_noutati.py") run_script_and_save_output(r"D:\python\test\x\mouse_pad_tot.py")
关键说明:
stderr=subprocess.STDOUT实现了和2>&1一样的效果,把错误输出合并到标准输出一起写入文件cwd=script_dir参数可以让子脚本在自己的目录下执行,如果你的子脚本需要读取同目录下的配置文件或其他资源,这个参数会非常有用- 可以通过
result.returncode获取子脚本的退出码,方便判断脚本是否运行成功
内容的提问来源于stack exchange,提问作者user9595062
相关产品推荐
相关产品推荐

