批量自动运行多个 Jupyter Notebook 文件的方法!!!

发布于:2025-07-13 ⋅ 阅读:(13) ⋅ 点赞:(0)

需求与问题

我在一个大文件夹 【多jupyter调用测试】 下面,有两个项目里面分别有一个jupyter文件。
如何实现自动调用上述两个jupyer,这样我就不用盯着程序看了

解决方案

下面是一个完整的 Python 脚本,它将:

  1. 遍历多个 Jupyter notebook 文件路径
  2. 在每个 notebook 所在的子文件夹中生成输出文件
  3. 输出文件名自动加上时间戳(防止覆盖)

✅ 完整 Python 脚本(输出保留目录 + 加时间戳)

import subprocess
import os
from datetime import datetime

# 输入你的 notebook 路径列表
notebooks = [
    r"C:\Users\***\Desktop\多jupyter调用测试\***\***.ipynb",
    r"C:\Users\***\Desktop\多jupyter调用测试\***\***.ipynb"
]

# 获取当前时间戳,用于唯一标识输出文件
timestamp = datetime.now().strftime("%Y%m%d-%H%M%S")

for nb_path in notebooks:
    # 获取文件夹和文件名
    folder = os.path.dirname(nb_path)
    filename = os.path.basename(nb_path).replace(".ipynb", "")
    
    # 构造新的输出文件名:原名 + 时间戳
    output_name = f"{filename}-executed-{timestamp}.ipynb"
    
    print(f"📘 正在执行:{filename}")
    print(f"📁 输出路径:{os.path.join(folder, output_name)}\n")
    
    # 执行 notebook,并保存为新文件
    subprocess.run([
        "jupyter", "nbconvert", "--to", "notebook", "--execute",
        "--output", output_name,
        nb_path
    ])

🚀 注意

文件地址的写法问题!
当采用字符串写作的话,这里就要用“\”来表达路径,用“r”在路径前标注

r"C:\Users\***\Desktop\多jupyter调用测试\***\***.ipynb"

而当直接写路径的时候,就要用“/”来表达路径,但是不需要“r”来标注

"C:/Users/***/Desktop/多jupyter调用测试/***/***.ipynb"

📦 输出示例

如果原文件是:

RnnNet_***-....ipynb

则输出为:

RnnNet_***-....-executed-20250712-142300.ipynb

并保存在原 notebook 的同一个文件夹中。

同时,原来的jupyter文件运行过程中所产生的打印会保留在输出的jupyter文件。输出文件则在原jupyter文件所在的目录!

📌 说明

  • 使用的是 nbconvert 原生 API,兼容性好;
  • 时间戳使用格式 YYYYMMDD-HHMMSS
  • 运行过程有清晰的打印提示,便于跟踪每个 notebook 的执行状态。


网站公告

今日签到

点亮在社区的每一天
去签到