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

如何运行不同路径的多个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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:38:27