防止Jupyter笔记本中的单元格保存到磁盘

时间:2018-06-13 17:35:06

标签: jupyter-notebook jupyter

我有一个Jupyter Python笔记本,其中一个特定单元格具有非常大的可视输出(包括嵌入数据的多兆字节Javascript)。有没有办法标记单元格,以便输出不会保存到.ipynb文件中?

1 个答案:

答案 0 :(得分:3)

如果不安装Jupyter扩展,我不知道如何做到这一点。我认为这可以在前端完成,例如,创建一个带有JS代码模板的小部件扩展,然后将模板填充为输出,因为有选择地保存小部件状态。

如果您想要一个合理的解决方案,只需要很少的工作量,并且您有权修改Jupyter服务器环境,我建议您使用jupyter_notebook_config.py中的file save hook。剥离输出的文档中已经有一个例子。我已修改它(但未测试它!)以删除标记为no-save的单元格的JS输出。

def scrub_output_pre_save(model, **kwargs):
    """scrub output before saving notebooks"""
    # only run on notebooks
    if model['type'] != 'notebook':
        return
    # only run on nbformat v4
    if model['content']['nbformat'] != 4:
        return

    for cell in model['content']['cells']:
        if cell['cell_type'] != 'code':
            continue
        metadata = cell['metadata']
        if 'tags' in metadata and 'no-save' in metadata['tags']:
            cell['outputs'] = []
            cell['execution_count'] = None


 c.FileContentsManager.pre_save_hook = scrub_output_pre_save

如果您需要这个可安装/可重复使用,上述代码可以打包并分发为Jupyter server extension