木星笔记本: 隐藏单元格输出的命令?

在我的笔记本中,我有一个单元格返回温度计算结果。它有点长,所以在它运行之后,我想隐藏它,当需要的时候,显示它。

要手动完成,我可以双击输出的左侧,以隐藏它

enter image description here

双击之后 enter image description here

但是有没有什么方法可以通过代码来实现呢? 例如,

单元格的最后一行,使用像 %%hide output这样的命令,在运行完成后输出将被隐藏。

另外,我可以在输出 HTML 中获得这个特性吗?

103751 次浏览

在单元格末尾添加 ;以隐藏该单元格的输出。

如果您不介意进行一些修改,那么您可以编写一个简单的脚本,将每个单元格的“塌陷”属性从 false 转换为 true Ipynb 文件(这是一个简单的 JSON 文件)。 但是,如果. ipynb 格式发生更改,这将来可能会失败。

基于 这个,几分钟前我为自己想出了这个主意:

%%javascript


$('#maintoolbar-container').children('#toggleButton').remove()


var toggle_button = ("<button id='toggleButton' type='button'>Show Code</button>");
$('#maintoolbar-container').append(toggle_button);


var code_shown = false;


function code_toggle()
{


if (code_shown)
{
console.log("code shown")
$('div.input').hide('500');
$('#toggleButton').text('Show Code');
}
else
{
console.log("code not shown")
$('div.input').show('500');
$('#toggleButton').text('Hide Code');
}


code_shown = !code_shown;
}


$(document).ready(function()
{
code_shown=false;
$('div.input').hide();
});


$('#toggleButton').on('click', code_toggle);

它确实有一个小故障: 每次运行这个单元格(我把它放在顶部) ,它都会添加一个按钮。所以,这个问题需要解决。需要在 maintoolbar-container中检查按钮是否已经存在,然后不添加它。

剪辑

我添加了必要的代码:

$('#maintoolbar-container').children('#toggleButton').remove()

在较新的版本(在我写这篇文章的时候是5.0.0)中,在命令模式下按 o会隐藏焦点单元格的输出。如果在输出前三次单击,也会发生同样的情况。

o

在新版本的 Jupiter 笔记本中,选择所需的单元格,确保处于命令模式,然后在菜单栏上按 Cell > Current Outputs。你有三个选择:

  • 切换(在命令模式下按 O应用相同的效果)
  • 切换滚动(默认输出)
  • Clear (清除所有输出)

图像到菜单栏选项

此外,如果选择“全部输出”而不是“当前输出”,则可以对文档中的所有单元格应用相同的效果。

不完全是你所追求的,但效果可能对你的目标足够好:

查看%% 捕获魔法(https://nbviewer.jupyter.org/github/ipython/ipython/blob/1.x/examples/notebooks/Cell%20Magics.ipynb)。它允许您将该单元格输出分配给一个变量。通过稍后调用该变量,您可以看到输出。

可以将 %%capture添加到单元格的开头。

Jupiter 提供了一个名为 %%capture的神奇单元命令,它允许您捕获该单元的所有输出。

你可以这样使用它:

捕获测试 打印(‘ test’)

test.stdout = > ‘ test n’

Https://ipython.readthedocs.io/en/stable/interactive/magics.html

你可以使用 https://github.com/google/etils中的笔记本工具:

!pip install etils[ecolab]


from etils import ecolab


with etils.collapse():
print('This content will be hidden by default')

它将捕获 stdout/stderr 输出,并将其显示为一个可折叠的部分。

在内部,这或多或少相当于:

import contextlib
import html
import io
import IPython.display




@contextlib.contextmanager
def collapse(name: str = ''):
f = io.StringIO()
with contextlib.redirect_stderr(f):
with contextlib.redirect_stdout(f):
yield
name = html.escape(name)
content = f.getvalue()
content = html.escape(content)
content = f'<pre><code>{content}</code></pre>'
content = IPython.display.HTML(
f'<details><summary>{name}</summary>{content}</details>')
IPython.display.display(content)

enter image description here

该部分在默认情况下是折叠的,但是我在截图中将其还原了。

至于视窗, 在“木星笔记本”中,单击要隐藏其输出的单元格。 单击 Esc + o切换输出

为了防止单元格在输出中呈现,在笔记本中,通过 Voilo 或 voilo 网格栈,只需在每个单元格的第一行中隐藏输出:

%%capture --no-display

Ipypthon 文档中的参考资料

所以我完全理解。当你有像100个不同的情节,当你做“重新启动和运行所有”这些丑陋的情节都出现了

你可以做的是 ctrl+A和按 o它会突然隐藏所有你的细胞! ! !为了让你自动崩溃,你可能需要使用木星实验室(另一个级别后,木星笔记本) ,但仍然,通过做 ctrl+A然后 o你将能够崩溃所有的结果! ! !

选择所有 (请务必在编码框外单击!)
按钮崩溃