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

如何基于不同CSV文件与参数批量运行Python项目?

实现Python项目的批量自动化运行

当然可以实现批量自动化运行,下面提供两种实用方案,根据你的实际情况选择:

方案1:不修改原project.py,通过子进程批量调用

如果不想改动现有project.py的代码,使用subprocess模块批量启动进程运行脚本是最直接的方式。

实现代码

import subprocess

# 定义所有任务的参数配置,每个元素对应一个任务的输入、参数、输出信息
tasks = [
    {"input_file": "aaa.csv", "parm1": 7, "output_file": "a_res.csv"},
    {"input_file": "bbb.csv", "parm1": 4, "output_file": "b_res.csv"},
    {"input_file": "ccc.csv", "parm1": 2, "output_file": "c_res.csv"},
    {"input_file": "ddd.csv", "parm1": 6, "output_file": "d_res.csv"},
    # 可继续添加更多任务
]

# 循环执行每个任务
for task in tasks:
    # 构造命令行参数(需确保project.py支持命令行传参)
    cmd = [
        "python", "project.py",
        "--input", task["input_file"],
        "--parm1", str(task["parm1"]),
        "--output", task["output_file"]
    ]
    print(f"正在执行任务:处理{task['input_file']},参数parm1={task['parm1']}")
    # 执行命令并等待任务完成
    subprocess.run(cmd, check=True)
    print(f"任务完成:结果已保存到{task['output_file']}\n")

配套修改(若project.py未支持命令行传参)

给project.py添加命令行参数解析逻辑:

# project.py 新增代码
import argparse
import pandas as pd

def main():
    parser = argparse.ArgumentParser()
    parser.add_argument("--input", required=True, help="输入CSV文件路径")
    parser.add_argument("--parm1", type=int, required=True, help="参数parm1")
    parser.add_argument("--output", required=True, help="输出CSV文件路径")
    args = parser.parse_args()

    # 原有业务逻辑,示例如下
    df = pd.read_csv(args.input)
    df["processed"] = df["target_column"] * args.parm1
    df.to_csv(args.output, index=False)

if __name__ == "__main__":
    main()

方案2:重构project.py为函数调用,提升运行效率

如果可以修改原项目代码,把核心处理逻辑封装成函数,直接在批量脚本中导入调用,避免启动多个子进程,运行效率更高。

步骤1:重构project.py

将核心逻辑封装为可调用的函数:

# project.py
import pandas as pd

def process_data(input_file, parm1, output_file):
    # 原有业务处理逻辑
    df = pd.read_csv(input_file)
    df["processed"] = df["target_column"] * parm1
    df.to_csv(output_file, index=False)

if __name__ == "__main__":
    # 保留原命令行调用入口,兼容之前的使用方式
    import argparse
    parser = argparse.ArgumentParser()
    parser.add_argument("--input", required=True)
    parser.add_argument("--parm1", type=int, required=True)
    parser.add_argument("--output", required=True)
    args = parser.parse_args()
    process_data(args.input, args.parm1, args.output)

步骤2:编写批量运行脚本

# batch_run.py
from project import process_data

# 定义任务列表
tasks = [
    ("aaa.csv", 7, "a_res.csv"),
    ("bbb.csv", 4, "b_res.csv"),
    ("ccc.csv", 2, "c_res.csv"),
    ("ddd.csv", 6, "d_res.csv"),
    # 可继续添加任务
]

for input_file, parm1, output_file in tasks:
    print(f"正在处理{input_file},parm1={parm1}")
    process_data(input_file, parm1, output_file)
    print(f"处理完成,结果保存到{output_file}\n")

两种方案均能实现批量自动化运行:方案1无需修改原代码,适合快速落地;方案2运行效率更高,适合处理大量文件的场景。

内容的提问来源于stack exchange,提问作者Lkmuraz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 06:42:47