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

如何在Jupyter Notebook中加载另一 notebook 指定单元格的代码?

当然能实现这个需求!你可以自定义一个IPython魔法命令来搞定,步骤很简单:

第一步:自定义%load_cell魔法命令

先在你的Jupyter Notebook里运行下面这段代码,注册一个新的魔法命令:

import nbformat
from IPython.core.magic import register_line_magic

@register_line_magic
def load_cell(line):
    # 拆分输入的参数:单元格序号 和 笔记本路径
    parts = line.strip().split()
    if len(parts) != 2:
        print("正确用法:%load_cell 单元格序号 笔记本路径,比如 %load_cell 5 notebookname.ipynb")
        return
    
    cell_idx_str, nb_path = parts
    try:
        # 转成索引(Notebook的单元格是从0开始计数的,所以要减1)
        cell_idx = int(cell_idx_str) - 1
        # 读取目标Notebook文件
        nb = nbformat.read(nb_path, as_version=4)
        # 获取指定单元格
        target_cell = nb.cells[cell_idx]
        
        # 检查是不是代码单元格
        if target_cell.cell_type != 'code':
            print(f"注意:第{cell_idx+1}个单元格不是代码单元格,无法加载!")
            return
        
        # 替换当前单元格的内容为目标单元格的代码
        ip = get_ipython()
        ip.set_next_input(target_cell.source)
        
    except ValueError:
        print("单元格序号必须是数字哦!")
    except IndexError:
        print(f"目标Notebook里没有第{cell_idx+1}个单元格!")
    except FileNotFoundError:
        print(f"找不到文件:{nb_path},请检查路径是否正确")
    except Exception as e:
        print(f"加载时出错:{str(e)}")

第二步:使用自定义魔法命令

注册完成后,你就可以在新的代码单元格里输入类似这样的命令:

%load_cell 5 notebookname.ipynb

运行这个单元格后,当前单元格的内容会自动替换成notebookname.ipynb里第5个代码单元格的所有代码。

一些小提示

  • 如果目标Notebook和当前Notebook在同一个文件夹下,直接写文件名就行;不在同目录的话,要写相对路径或者绝对路径(比如../folder/notebook.ipynb)。
  • 如果想每次打开Jupyter都自动能用这个魔法命令,可以把上面的注册代码放到IPython的启动脚本里:找到你IPython配置文件夹下的startup目录(一般是~/.ipython/profile_default/startup/),新建一个.py文件把代码放进去就行。
  • 这个命令只会加载代码单元格,如果指定的单元格是Markdown或其他类型,会给出提示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 18:42:47