批量自动运行多个 Jupyter Notebook 文件的方法!!!
需求与问题
我在一个大文件夹 【多jupyter调用测试】 下面,有两个项目里面分别有一个jupyter文件。
如何实现自动调用上述两个jupyer,这样我就不用盯着程序看了
解决方案
下面是一个完整的 Python 脚本,它将:
- 遍历多个 Jupyter notebook 文件路径
- 在每个 notebook 所在的子文件夹中生成输出文件
- 输出文件名自动加上时间戳(防止覆盖)
✅ 完整 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 的执行状态。