Ipython Notebook:优雅地关闭部分单元格的方法?

45

在我的ipython笔记本中,有一部分单元格用作初步检查。

现在我想要关闭它,因为运行后我已经知道了数据集的状态,但我也想保留它,这样使用这个笔记本的其他人就可以拥有这个功能。

我该怎么做?有没有做这件事的示例?

  1. 我可以注释掉这些单元格,但是在关闭打开之间切换会很麻烦。而且对于其他人来说也可能不太方便。

  2. 我可以将其抽象成一个函数,但是这本身就有一些方法,所以代码会非常复杂,而且可能很难阅读?


1
添加 - 有没有办法在保存先前输出的同时进行添加? - YotamW Constantini
4个回答

54
使用 Jupyter notebook,您可以单击一个单元格,按下 esc 然后再按 r。这将把它转换为“原始”单元格。同样的操作可以将其转换回来,即 esc + y。不需要注释,只需按键即可。
在 Jupyer notebook 中,转到 帮助->键盘快捷键 获取更多信息。
以下是一个片段:
命令模式(按 Esc 启用)
  • ↩:进入编辑模式

  • ⇧↩:运行单元格并选择下面的单元格

  • ⌃↩:运行单元格

  • ⌥↩:运行单元格并在下方插入一个新单元格

  • y:转换为代码单元格

  • m:转换为 Markdown 单元格

  • r:转换为原始单元格


1
教你的朋友这个技巧,或在笔记本中添加评论,解释你的方法,这样其他人也可以做到。 - wgwz
哇,这很有趣,我从未听说过。但是我如何在多个“连续单元格”中使用esc+r?我想要关闭的代码涉及多个单元格,而不仅仅是一个。 - ZK Zhao
我最好的方法就是合并单元格,然后按下esc+r。 - wgwz
此外,我尝试将所有单元格抽象成函数,并通过一系列函数来触发它们。这样可以工作,但现在代码很难维护,因为“函数”和“结果”分别位于不同的单元格中。 - ZK Zhao
1
值得一提的是:对于不喜欢使用键盘快捷键的人,您也可以直接单击该块,然后在工具栏中使用“类型”下拉菜单将其切换为“原始”:https://i.imgur.com/R0Ef4W5.png - Venryx
显示剩余2条评论

50
在Jupyter笔记本中,可以在单元格开头使用这个魔术命令来避免其执行:
%%script false --no-raise-error

3
使用这个解决方案,您可以保留语法高亮,这非常好。 - talz
我尝试了这个并得到了输出:"无法找到程序:'false'"。虽然如此,仍然很有用,所以谢谢@Davide Fiocco。 - Neverre-Codenov
1
在谷歌Colab中也非常完美地工作了。 - Reuven
我觉得这不太优雅,因为单元格似乎会永远挂起。 - snoob dogg
你能为整个部分翻译吗? - euh

2

你可以使用一个条件语句,但需要额外增加一层缩进。

cellEnabled = 0
#cellEnabled = 1

if cellEnabled:
    doA()
    doB()

0

我有同样的需求,最终我发现了一个名为 Freeze 的 nbextension。启用它后,您将在工具栏中获得一个漂亮的冻结按钮。当您单击它时,您当前所在的单元格将变为“冻结”状态。这意味着它将变成绿色(使其在视觉上清晰),并且在运行所有过程中将被忽略。它也被锁定以防止编辑,因此在编辑或运行单元格之前需要解除冻结(解锁按钮位于冻结按钮左侧两个)。不过这很容易做到,因为只需要一个按钮。

如果这不是非常清楚,请告诉我。否则,希望这可以帮助您!


它是否也保留单元格输出?附上一张截图会更好。 - YotamW Constantini
2
如果单元格之前已经运行过,那么输出将保留并保持不变。但是我似乎无法在评论中插入截图。 - J_Code

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