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

如何实现参数按规则递增的Python函数批量重复调用?

批量调用同结构自定义函数的精简方案

你不需要逐行手写上百条重复调用语句,这类参数按固定规则生成的批量操作,直接通过循环动态拼接参数即可完成,代码量可以压缩到10行以内。


核心实现逻辑

你的调用参数里,first_excel是固定传入值,剩下三个参数都遵循固定命名模板,仅和设备型号前缀、3位递增编号两个变量相关:

  • sheet_name格式固定为{型号}-{3位补零编号}
  • csv输入文件名、输出文件名仅需要根据你实际的文件命名规则,拼接对应字符串即可

注意:首次运行建议先循环打印1-2个编号拼接出的参数,和你实际的sheet名、文件名核对一致后再执行全量调用,避免参数拼接错误导致文件找不到、输出文件误覆盖等问题。


代码示例

场景1:文件命名统一(推荐先核对实际文件名)

从你给出的AAA-001到AAA-004的示例来看,大概率是写AAA-100、BBB系列示例时漏打了编号和后续字段间的下划线,所有文件实际命名规则统一,直接用以下代码即可:

# 声明需要处理的设备型号
device_list = ["AAA", "BBB"]

for model in device_list:
    # 遍历1-100的编号,zfill(3)自动补前导零:1→"001"、10→"010"、100→"100"
    for num in range(1, 101):
        num_str = str(num).zfill(3)
        # 按规则拼接三个动态参数
        sheet = f"{model}-{num_str}"
        input_csv = f"{model}{num_str}_Mirae_Performance_Lot(2022)_N1.2.csv"
        output_file = f"TFM_{model}{num_str}_merged_file.csv"
        # 执行调用
        merge_data(first_excel, sheet, input_csv, output_file)

场景2:严格匹配你给出的示例命名规则

如果你的文件命名确实和示例完全一致(AAA型号编号小于100时带分隔下划线,编号100不带;BBB型号全编号都不带下划线),加个简单的分隔符判断即可:

device_list = ["AAA", "BBB"]

for model in device_list:
    for num in range(1, 101):
        num_str = str(num).zfill(3)
        sheet = f"{model}-{num_str}"
        # 按规则判断是否需要加下划线分隔
        separator = "_" if (model == "AAA" and num < 100) else ""
        input_csv = f"{model}{num_str}{separator}Mirae_Performance_Lot(2022)_N1.2.csv"
        output_file = f"TFM_{model}{num_str}{separator}merged_file.csv"
        merge_data(first_excel, sheet, input_csv, output_file)

可选优化

  • 若要避免个别csv文件缺失导致程序中断,可以在调用前用os.path.exists(input_csv)检查文件是否存在,不存在时打印提示信息跳过即可
  • 这类文件合并属于IO密集型操作,如果数据量大,可以用concurrent.futures.ThreadPoolExecutor做多线程并行处理,能大幅缩短总执行时间

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 12:27:13