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

Python中如何切换参数调用对应函数批量处理文件夹下的文件

实现方案

核心思路是抽离重复逻辑,把可变的数据源路径、fct1实现作为可配置参数传入,避免写两套完全重复的处理函数,切换时仅需修改配置即可。

步骤1:导入依赖并抽离公共处理逻辑

把所有可变参数从业务逻辑中剥离,用工厂函数根据传入的配置生成对应版本的处理函数:

import os
import pandas as pd
# 提前导入两个版本的fct1,避免运行时重复导入
from fcts1 import fct1 as fct1_v1
from fcts2 import fct1 as fct1_v2

def create_processors(csv_path: str, fct1_impl):
    """根据传入的配置生成对应版本的A/B/C处理函数"""
    def A_fct(fileA):
        df = pd.read_csv(csv_path)
        dfA = pd.read_csv(fileA, skiprows=2, sep=r"\s*\|\s*")
        fct1_impl()
    def B_fct(fileB):
        df = pd.read_csv(csv_path)
        dfB = pd.read_excel(fileB)
        fct1_impl()
    def C_fct(fileC):
        df = pd.read_csv(csv_path)
        dfC = pd.read_excel(fileC)
        fct1_impl()
    # 返回处理函数映射,直接可用于后续遍历调用
    return {
        "A": A_fct,
        "B": B_fct,
        "C": C_fct
    }

步骤2:定义版本配置映射

把两个版本的参数提前配置好,后续仅需指定版本号即可切换:

MODE_CONFIG = {
    # 版本1:用File1.csv + fcts1的fct1
    "v1": {
        "csv_path": "File1.csv",
        "fct1": fct1_v1
    },
    # 版本2:用File2.csv + fcts2的fct1
    "v2": {
        "csv_path": "File2.csv",
        "fct1": fct1_v2
    }
}

步骤3:按需选择版本执行业务逻辑

if __name__ == "__main__":
    # 这里按需修改版本号即可切换,填v1或v2
    USE_MODE = "v1"
    # 也可以用命令行参数动态传版本,不用改代码,示例如下:
    # import argparse
    # parser = argparse.ArgumentParser()
    # parser.add_argument("--mode", type=str, default="v1", choices=["v1", "v2"])
    # args = parser.parse_args()
    # USE_MODE = args.mode

    # 加载对应版本配置
    config = MODE_CONFIG[USE_MODE]
    # 生成对应版本的处理函数映射
    name_to_func = create_processors(**config)

    # 原有的遍历逻辑,注意要拼接完整文件路径避免读不到文件
    files_path = "./Files"
    for file_name in os.listdir(files_path):
        file_prefix = file_name.split('.')[0]
        if file_prefix in name_to_func:
            full_file_path = os.path.join(files_path, file_name)
            name_to_func[file_prefix](full_file_path)

以上方案不需要维护两套完全重复的A/B/C处理函数,后续修改业务逻辑仅需修改create_processors里的对应函数即可,切换版本时仅需修改USE_MODE的值,或者运行时通过命令行参数指定即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 10:03:02