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

如何在Jupyter Notebook中编写脚本实现多个笔记本按顺序自动运行

Jupyter 多笔记本顺序自动执行方案

完全可以通过单个控制笔记本实现批量按顺序执行其他Jupyter Notebook,常用的有两种成熟方案:


方案1:使用Jupyter原生内置工具实现(无需额外装包)

直接用Jupyter自带的nbconvert相关模块即可实现,适合不需要复杂参数配置的场景:

import os
from nbconvert.preprocessors import ExecutePreprocessor
import nbformat

# 按照实际执行顺序填写所有笔记本的路径,路径为相对于当前控制笔记本的相对路径,也可写绝对路径
notebook_order = [
    "./task1.ipynb",
    "./task2.ipynb",
    "./task3.ipynb",
    # 依次填写剩余的7个笔记本路径
    "./task10.ipynb"
]

# 配置执行参数,timeout设为None代表不限制单个笔记本的最大运行时长
execute_config = ExecutePreprocessor(timeout=None, kernel_name='python3')

for nb_path in notebook_order:
    print(f"当前执行:{nb_path}")
    with open(nb_path, 'r', encoding='utf-8') as f:
        nb_content = nbformat.read(f, as_version=4)
    # 指定工作目录为被执行笔记本所在目录,避免笔记本内的相对路径读写报错
    execute_config.preprocess(nb_content, {'metadata': {'path': os.path.dirname(nb_path)}})
    # 可选:执行完成后保存带运行输出的新版本笔记本
    with open(nb_path.replace('.ipynb', '_result.ipynb'), 'w', encoding='utf-8') as f:
        nbformat.write(nb_content, f)
    print(f"执行完成:{nb_path}\n")

特点:不需要额外安装依赖,开箱即用,如果需要中途某一个笔记本报错后继续执行后续任务,在外层加try-except捕获异常即可。


方案2:使用papermill工具实现(功能更丰富)

适合需要参数化运行、进度可视化、报错信息完整留存的场景,先执行pip install papermill完成安装,再运行以下代码:

import os
import papermill as pm

notebook_order = [
    "./task1.ipynb",
    "./task2.ipynb",
    # 依次填写剩余的笔记本路径
    "./task10.ipynb"
]

# 提前创建保存执行结果的目录
os.makedirs('./run_result', exist_ok=True)

for idx, nb_path in enumerate(notebook_order, start=1):
    output_path = f"./run_result/任务{idx}_{os.path.basename(nb_path)}"
    print(f"开始执行第{idx}个任务:{nb_path}")
    pm.execute_notebook(
        input_path=nb_path,
        output_path=output_path,
        kernel_name='python3',
        progress_bar=True,
        # 可选:给被执行的笔记本传入自定义参数,参数可在被执行笔记本的第一个标注为parameters的单元格中接收
        parameters=None
    )
    print(f"第{idx}个任务执行完成,结果已保存到:{output_path}\n")

特点:内置进度条展示执行进度,所有运行输出、报错信息都会完整保存在结果笔记本中,排查问题更方便,也支持给不同笔记本传入不同的自定义运行参数。


通用注意事项

  • 如果被执行的笔记本需要用指定的虚拟环境运行,先把对应环境添加为Jupyter Kernel,再把代码中的kernel_name改为对应kernel的名称即可
  • 被执行的笔记本中不要保留需要手动交互输入的逻辑,否则执行流程会卡住
  • 笔记本内的文件读写尽量用绝对路径,或者确认执行时的工作目录和手动运行时一致,避免路径报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 22:06:01