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

数据挖掘 蟒蛇 朱庇特
2021-10-12 00:31:49

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

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

4个回答

看到这个堆栈问题

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

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 参数

你可以注册一个新的细胞魔法,例如:

from IPython.core.magic import register_cell_magic
@register_cell_magic
def run_and_save(line, cell):
    'Run and save python code block to a file'
    with open(line, 'wt') as fd:
        fd.write(cell)
    code = compile(cell, line, 'exec')
    exec(code, globals())

现在,您可以使用 run_and_save 魔法:

%%run_and_save hello.py

class Hello:
   def __init__(self):
      pass

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

但我知道您可以下载为 python 文件,然后简单地将所需的特定单元复制粘贴到新的Jupyter笔记本中。

如果您需要更多帮助,请告诉我!

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

import pickle
with open('cell_10.pickle', 'wb') as f:
    pickle.dump(_10, f, pickle.HIGHEST_PROTOCOL)