如何导出Jupyter笔记本的一个单元格?


10

我目前正在使用Jupyter笔记本/进行原型设计。我想在独立的iPython shell 上运行一些代码。

现在,我导出我的iPython代码(文件->下载为),然后在我的iPython中执行它(使用%run)。它可以工作,但是我只想导出一个单元格或一组单元格。因此,我只能运行在Jupyter笔记本中修改的内容


我不确定是否像在jupyter notebook中那样有意义,内核会维护以前运行的命令的状态,而ipython%run命令可能不是这样。
Rohan Sadale

3
对于单个单元格,您可以简单地复制和粘贴或使用IPython魔术:1)%% writefile,请参阅stackoverflow.com/questions/21034373/…或2)%save,请参阅stackoverflow.com/questions/947810/…命令。
瓦伦塔斯(Valentas)

1
@RohanSadale我想要的是在jupyter笔记本和ipython shell中都可以工作。我的笔记本是共享的,当我想使命令先前在我的笔记本上运行但具有更大的数据集并测试一些内容时,我在ipython shell上完成了此操作。
Manu H

@Valentas您的评论应被重写为答案。
Manu H

Answers:


4

看到这个堆栈问题

您可以使用%% capture Jupyter notebook的magic命令捕获单元格的输出,然后使用以下命令将其粘贴到文本文件中

with open('output.txt', 'w') as out:
   out.write(cap.stdout)

如果要将代码存储到特定文件(例如code.txt)中,则可以使用魔术函数%% writefile

%%writefile example.txt
ab = 'This is code'
a = 5
print(a+ 2)

另外,如果要附加到文件,则必须使用-a参数


我认为您误解了这个问题。我要导出的不是单元格的结果,而是我写入该单元格中的代码。
Manu H

ipython.readthedocs.io/en/stable/interactive/magics.html然后您可以使用%% writefile魔术函数
R__A_a_

1

我不确定在Jupyter笔记本中是否只能导出一个单元格。

但我确实知道您可以将其下载为python文件,只需将所需的特定单元格复制粘贴到新的Jupyter笔记本中。

让我知道您是否需要更多帮助!


0

可以做到这一点的一种方法是使用Python的输出缓存系统访问单元的输出,以便可以将其保存到文件中。编号为x的单元格x的输出存储在名为的变量中_x,而最后一条命令_的输出位于in 等等。例如,cell_10.pickle使用python的pickle格式将10号单元格的输出保存到文件中:

import pickle
with open('cell_10.pickle', 'wb') as f:
    pickle.dump(_10, f, pickle.HIGHEST_PROTOCOL)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.