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

4

我有一个Jupyter Python笔记本,在其中一个单元格中有非常大的可视化输出(包括嵌入数据在内的多兆字节的Javascript)。是否有一种方法可以标记该单元格,以便不将其输出保存到.ipynb文件中?

1个回答

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服务器扩展

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接