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

如何用Python自动检测并依次运行指定文件夹中的ipynb文件?

解决方案

%run是Jupyter Notebook专属的魔法命令,无法直接在普通Python循环中调用。要批量运行指定文件夹内的ipynb文件,推荐两种可靠实现方式:

方式一:使用nbconvert(官方工具)

nbconvert是Jupyter官方提供的工具,可通过Python API调用实现ipynb文件的批量执行。

示例代码:

import glob
from nbconvert.preprocessors import ExecutePreprocessor
from nbformat import read, write

# 匹配目标文件夹下所有ipynb文件
ipynb_files = glob.iglob("/Users/your_target_path/*.ipynb")

for file_path in ipynb_files:
    # 读取ipynb文件内容
    with open(file_path, 'r', encoding='utf-8') as f:
        nb = read(f, as_version=4)
    
    # 初始化执行处理器,timeout=-1表示不限制运行时长
    ep = ExecutePreprocessor(timeout=-1, kernel_name='python3')
    
    try:
        # 执行笔记本代码
        ep.preprocess(nb, {'metadata': {'path': './'}})
        # 保存执行后的结果(不需要保留结果可删除此步骤)
        with open(file_path, 'w', encoding='utf-8') as f:
            write(nb, f)
        print(f"执行完成:{file_path}")
    except Exception as e:
        print(f"执行失败:{file_path},错误信息:{str(e)}")

前置依赖安装:

pip install nbconvert jupyter_client

方式二:使用papermill(轻量化批量工具)

papermill是专门针对Jupyter Notebook批量执行的工具,语法更简洁,支持参数化运行。

示例代码:

import glob
import papermill as pm

# 匹配目标文件夹下所有ipynb文件
ipynb_files = glob.iglob("/Users/your_target_path/*.ipynb")

for file_path in ipynb_files:
    try:
        # 执行笔记本,output_path可指定新路径避免覆盖原文件
        pm.execute_notebook(
            input_path=file_path,
            output_path=file_path,
            kernel_name='python3'
        )
        print(f"执行完成:{file_path}")
    except Exception as e:
        print(f"执行失败:{file_path},错误信息:{str(e)}")

前置依赖安装:

pip install papermill

原方法失效原因

%run是Jupyter内核上下文专属的魔法命令,不属于标准Python语法,因此无法在普通循环中直接调用,必须借助专门的库处理ipynb文件的执行逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 04:43:11