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

如何在Jupyter Notebook中循环交替变量值执行Python脚本?

解决Jupyter Notebook遍历文件自动重运行单元格的方法

方法1:重构代码为函数(最推荐)

把分散在20个单元格里的处理逻辑封装成一个接受文件参数的函数,再循环遍历文件列表调用它——这和R里把处理逻辑写成函数后用lapply遍历的思路完全一致,逻辑清晰且易维护。

操作步骤:

  • 整理原有逻辑为函数:
    def process_file(target_file):
        # 把原来20个单元格里的代码迁移到这里,所有用到variable_file的地方替换成target_file
        # 示例流程:读取文件→处理→返回结果
        import pandas as pd
        data = pd.read_csv(target_file)
        # 中间数据清洗、计算等步骤
        result = data['target_column'].sum()  # 示例结果
        return result
    
  • 循环遍历文件列表批量处理:
    variable_file = ['file_1.csv', 'file_2.csv', 'file_3.csv']  # 你的文件列表
    all_results = []
    for file in variable_file:
        print(f"正在处理: {file}")
        res = process_file(file)
        all_results.append(res)
        print(f"{file} 处理完成,结果: {res}\n")
    
    # 汇总输出所有结果
    print("全部处理结果:")
    for file, res in zip(variable_file, all_results):
        print(f"{file}: {res}")
    

方法2:用IPython API控制单元格循环运行

如果不想重构代码,可以借助IPython的API全局赋值变量,再循环运行指定单元格(适合临时快速测试):

from IPython import get_ipython
ip = get_ipython()

variable_file = ['file_1.csv', 'file_2.csv', 'file_3.csv']
for file in variable_file:
    # 将当前文件赋值为全局变量,让所有引用variable_file的单元格能读取到
    globals()['variable_file'] = file
    print(f"开始处理 {file}")
    # 运行指定范围的单元格(假设处理逻辑在第2到第21个单元格,索引从0开始)
    for cell_idx in range(1, 21):
        ip.run_cell(cell_idx)
    print(f"{file} 处理完成\n")

方法3:用nbconvert命令行批量运行

适合自动化批量处理场景,类似R里用命令行循环运行R脚本并传参:

  • 先修改你的Notebook开头,支持接收命令行参数:
    import sys
    # 命令行运行时取传入的文件参数,交互式运行时用默认值
    if len(sys.argv) > 1:
        variable_file = sys.argv[1]
    else:
        variable_file = 'file_1.csv'
    
  • 在终端循环遍历文件,调用nbconvert运行Notebook:
    for file in file_1.csv file_2.csv file_3.csv; do
        jupyter nbconvert --to notebook --execute --inplace --ExecutePreprocessor.timeout=600 your_notebook.ipynb --ExecutePreprocessor.argv="$file"
        # 将结果另存为带文件名的新Notebook
        cp your_notebook.ipynb result_${file%.csv}.ipynb
    done
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 19:40:42