繁体   English   中英

将代码单元中的代码从一个 jupyter notebook 加载到另一个 jupyter notebook

[英]load code from a code cell from one jupyter notebook into another jupyter notebook

我想将代码从一个jupyter笔记本中的代码单元加载(即复制代码)到另一个jupyter笔记本(运行Python的Jupyter,但不确定这是否重要)。 我真的很想输入类似的东西

%load cell[5] notebookname.ipynb

该命令将 notebookname.ipynb 的单元格 5 中的所有代码复制到我正在处理的notebookname.ipynb的代码单元格中。 有人知道如何做到这一点吗?

改编在 Jupyter Notebook 上找到一些代码,以下将显示指定笔记本中特定单元格的代码:

import io
from nbformat import read

def print_cell_code(fname, cellno):
    with io.open(fname, 'r', encoding='utf-8') as f:
        nb = read(f, 4)
    cell = nb.cells[cellno]
    print(cell.source)

print_cell_code("Untitled.ipynb",2)

不知道一旦代码在那里你想做什么,但也许这可以适应你的需要。 试试print(nb.cells)看看read带来了什么。

您可能想要使用或编写自己的nbconvert预处理器来从一个单元格中提取一个单元格并插入到另一个单元格中。 需要对这些文档进行大量研究才能了解如何编写预处理器,但这是首选方式。

您拥有的快速修复选项是 nbformat 规范基于 JSON,这意味着如果您使用纯 python 读取ipynb文件(即使用openread ),您可以调用json.loads上的整个文件成dict 从那里,您可以访问单元cells条目中的单元格(这是一个单元格list )。 所以,像这样:

import json

with open("nb1.ipynb", "r") as nb1, open("nb2.ipynb", "r") as nb2:
    nb1, nb2 = json.loads(nb1.read()), json.loads(nb2.read())
    nb2["cells"].append(nb1["cells"][0]) # adds nb1's first cell to end of nb2

这假设(就像您的问题一样)笔记本之间没有元数据冲突。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM