【问题标题】:Preventing a cell in a Jupyter notebook from saving to disk防止 Jupyter 笔记本中的单元格保存到磁盘
【发布时间】:2018-06-13 17:35:05
【问题描述】:

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

【问题讨论】:

    标签: jupyter-notebook jupyter


    【解决方案1】:

    我不知道在不安装 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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-08-16
      • 1970-01-01
      • 1970-01-01
      • 2016-01-14
      • 2020-05-05
      • 1970-01-01
      • 1970-01-01
      • 2022-08-16
      相关资源
      最近更新 更多