如何清除IPython笔记本电脑&x27;在Linux终端的所有单元格中输出?

如何清除IPython笔记本电脑&x27;在Linux终端的所有单元格中输出?,linux,ipython-notebook,Linux,Ipython Notebook,我有一个问题,当一个笔记本的输出很长,并且保存到笔记本中时,每当我想再次打开这个笔记本时,浏览器就会崩溃,无法正确显示 要解决这个问题,我必须用文本编辑器打开它,并删除导致问题的单元格中的所有输出 我想知道是否有一种方法可以清除笔记本的所有输出,这样就可以毫无问题地再次打开它。我想删除所有输出,因为删除一个特定的输出似乎更麻烦。nbconvert 6.0应该修复--清除输出 该选项之前已中断很长时间,合并补丁的错误报告: 使用方法应适用于就地操作: jupyter nbconvert --cle

我有一个问题,当一个笔记本的输出很长,并且保存到笔记本中时,每当我想再次打开这个笔记本时,浏览器就会崩溃,无法正确显示

要解决这个问题,我必须用文本编辑器打开它,并删除导致问题的单元格中的所有输出


我想知道是否有一种方法可以清除笔记本的所有输出,这样就可以毫无问题地再次打开它。我想删除所有输出,因为删除一个特定的输出似乎更麻烦。

nbconvert 6.0应该修复
--清除输出

该选项之前已中断很长时间,合并补丁的错误报告:

使用方法应适用于就地操作:

jupyter nbconvert --clear-output --inplace my_notebook.ipynb
或者保存到另一个名为
my_notebook\u no\u out.ipynb的文件中:

jupyter nbconvert --clear-output \
  --to notebook --output=my_notebook_no_out my_notebook.ipynb
这引起了我的注意

nbconvert 6.0之前的
--ClearOutputPreprocessor.enabled=True

相同的用法--清除输出

jupyter nbconvert --ClearOutputPreprocessor.enabled=True --inplace my_notebook.ipynb
jupyter nbconvert --ClearOutputPreprocessor.enabled=True \
  --to notebook --output=my_notebook_no_out my_notebook.ipynb
在Jupyter 4.4.0中测试,笔记本==5.7.6。

使用--ClearOutputPreprocessor.enabled=True--clear output

执行以下命令:

jupyter nbconvert--ClearOutputPreprocessor.enabled=True--clear output*.ipynb
使用,它不仅可以清除笔记本输出,还可以清除代码

通过
pip安装clean\u ipynb安装


运行方式
clean\u ipynb hello.ipynb

如果创建
.gittributes
,则可以在将某些文件添加到git之前对其运行筛选器。这将使磁盘上的原始文件保持原样,但提交“已清理”的版本

要使其工作,请将其添加到本地
.git/config
或全局
~/.gitconfig

[filter "strip-notebook-output"]
    clean = "jupyter nbconvert --ClearOutputPreprocessor.enabled=True --to=notebook --stdin --stdout --log-level=ERROR"
然后在笔记本目录中创建一个
.gittributes
文件 内容:

工作原理:

  • 该属性告诉git在将每个笔记本文件添加到索引(暂存)之前,对每个笔记本文件运行过滤器的
    clean
    操作
  • 过滤器是我们的朋友nbconvert
,设置为从stdin读取、写入stdout、剥离输出,并且只有当它有重要的话要说时才说话
  • 从索引中提取文件时,将运行过滤器的
    smudge
    操作,但这是不可操作的,因为我们没有指定它。您可以在此处运行笔记本以重新创建输出(
    nbconvert--execute
  • 请注意,如果筛选器以某种方式失败,则文件将被暂存而无法转换 我对这个过程唯一的不满是我可以提交
    .gittributes
    ,但我必须告诉我的同事更新他们的
    .git/config

    如果您想要一个更黑客但速度更快的版本,请尝试:


    要扩展@dirkjot的答案以解决有关共享配置的问题,请执行以下操作:

    创建本地.gitconfig文件,而不是修改.git/config。这使得需要在其他机器上运行的命令稍微简单一些。您还可以创建一个脚本来运行
    git config
    命令:

    git config--local include.path../.gitconfig

    注意,我还将日志级别更改为INFO,因为我确实希望看到clean正在运行的确认

    repo/.gitconfig

    [filter "strip-notebook-output"]
        clean = "jupyter nbconvert --ClearOutputPreprocessor.enabled=True --to=notebook --stdin --stdout --log-level=INFO"
    
    repo/.gittributes

    *.ipynb filter=strip-notebook-output
    
    repo/git\u configure.sh

    git config --local include.path ../.gitconfig
    
    然后,用户只需运行:

    $ chmod u+x git_configure.sh
    $ ./git_configure.sh
    

    我必须说,对于清除一些子数组和重置一些执行编号的简单工作,我发现jupyer nbconvert的速度非常慢。在可维护性方面,它是一个优越的解决方案,因为如果笔记本源代码格式发生更改,该工具将被更新。但是,如果您没有nbconvert 6.0(目前我有一个运行5.6.1的环境),下面的替代解决方案速度更快,也可能有用

    一个非常简单的脚本可以非常快地完成此任务:

    jq'reduce path(.cells[]| select(.cell_type==“code”))为$cell(;setpath($cell+[“outputs”];[]))|setpath($cell+[“execution_count”];null))'notebook.ipynb
    
    非常简单,它识别代码单元,并将其
    输出
    执行计数
    属性分别替换为
    []


    或者,如果您只想删除输出并保留执行编号,则可以执行更简单的操作:

    jq 'del(.cells[]|select(.cell_type == "code").outputs[])' notebook.ipynb
    

    明尔克为此创建了一个脚本。看。这正是我需要的,谢谢。这将把笔记本转换成html,而这似乎不是op想要的。@Jacquot你使用的是什么版本的Jupyter?我刚刚重新测试过,它在没有创建HTML的情况下修改了
    .ipynb
    的inplace。我读你的评论太快了,不知道
    --inplace
    选项;我学到了一些东西。但在我的5.3.1版中,出现了选项
    --清除输出
    ,该选项总结了
    --清除输出预处理器。enabled=True--就地
    我必须在笔记本中添加一个
    --以使第二个版本(非就地)工作选项
    --清除输出
    已损坏,请参阅问题。这在上个月(2020年7月)已经修复,因此它应该在下一个版本中再次工作。这是一个可以做到这一点的工具,它具有一些方便的附加功能,例如只删除某些代码/文本块,以便方便教学。这是两个方面的最佳选择。谢谢分享,我不知道。这非常有用。下面是一个稍微改进的替代方案。它会清理元数据,并且不会像建议的JQ解决方案那样将输出和执行计数添加到非代码单元格中(这会导致警告):
    clean=“JQ”.cells |=map(if.\'cell\u type\”==“code\”then.outputs=[]|.execution\u count=null else.end |.metadata={}.
    $ chmod u+x git_configure.sh
    $ ./git_configure.sh
    
    jq 'del(.cells[]|select(.cell_type == "code").outputs[])' notebook.ipynb