在我的笔记本中,我有一个单元格返回温度计算结果。它有点长,所以在它运行之后,我想隐藏它,当需要的时候,显示它。
要手动完成,我可以双击输出的左侧,以隐藏它
双击之后
但是有没有什么方法可以通过代码来实现呢? 例如,
单元格的最后一行,使用像 %%hide output这样的命令,在运行完成后输出将被隐藏。
%%hide output
另外,我可以在输出 HTML 中获得这个特性吗?
在单元格末尾添加 ;以隐藏该单元格的输出。
;
如果您不介意进行一些修改,那么您可以编写一个简单的脚本,将每个单元格的“塌陷”属性从 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
剪辑
我添加了必要的代码:
$('#maintoolbar-container').children('#toggleButton').remove()
在较新的版本(在我写这篇文章的时候是5.0.0)中,在命令模式下按 o会隐藏焦点单元格的输出。如果在输出前三次单击,也会发生同样的情况。
o是
在新版本的 Jupiter 笔记本中,选择所需的单元格,确保处于命令模式,然后在菜单栏上按 Cell > Current Outputs。你有三个选择:
图像到菜单栏选项
此外,如果选择“全部输出”而不是“当前输出”,则可以对文档中的所有单元格应用相同的效果。
不完全是你所追求的,但效果可能对你的目标足够好:
查看%% 捕获魔法(https://nbviewer.jupyter.org/github/ipython/ipython/blob/1.x/examples/notebooks/Cell%20Magics.ipynb)。它允许您将该单元格输出分配给一个变量。通过稍后调用该变量,您可以看到输出。
可以将 %%capture添加到单元格的开头。
%%capture
Jupiter 提供了一个名为 %%capture的神奇单元命令,它允许您捕获该单元的所有输出。
你可以这样使用它:
捕获测试 打印(‘ test’)
test.stdout = > ‘ test n’
test.stdout
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)
该部分在默认情况下是折叠的,但是我在截图中将其还原了。
至于视窗, 在“木星笔记本”中,单击要隐藏其输出的单元格。 单击 Esc + o切换输出
Esc + o
为了防止单元格在输出中呈现,在笔记本中,通过 Voilo 或 voilo 网格栈,只需在每个单元格的第一行中隐藏输出:
%%capture --no-display
Ipypthon 文档中的参考资料
所以我完全理解。当你有像100个不同的情节,当你做“重新启动和运行所有”这些丑陋的情节都出现了 你可以做的是 ctrl+A和按 o它会突然隐藏所有你的细胞! ! !为了让你自动崩溃,你可能需要使用木星实验室(另一个级别后,木星笔记本) ,但仍然,通过做 ctrl+A然后 o你将能够崩溃所有的结果! ! ! 选择所有 (请务必在编码框外单击!) 按钮崩溃
ctrl+A
o