关于ipython:Jupyter Notebook:用于隐藏单元格输出的命令?

Jupyter Notebook: command for hide the output of a cell?

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

要手动执行,我可以双击输出的左侧以将其隐藏

enter image description here

双击后
enter image description here

但是有什么办法可以通过代码做到这一点吗? 例如,

单元格的最后一行,使用类似%%hide output的命令,并且在完成运行后将隐藏输出。

另外,我可以在输出HTML中获得此功能吗?


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


在较新的版本中(在我撰写本文时为5.0.0),在命令模式下按o可以隐藏焦点所在的单元格的输出。如果在输出的前面三击,也会发生相同的情况。

o

  • 单词输出中的第一个字母或
  • 字母表中第15个字母的小写


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

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

图像到菜单栏选项

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


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

Jupyter提供了一个称为%%capture的魔术单元命令,该命令可让您捕获该单元的所有输出。

您可以像这样使用它:

%%capture test
print('test')

test.stdout =>'测试\ n'

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


不完全是您所追求的,但是效果可能足以满足您的目的:

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


基于此,几分钟前我刚刚为自己想到了这个:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
%%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来查看按钮是否已经存在,然后再不添加按钮。

编辑

我添加了必要的代码:

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

如果您不介意骇客,那么您可以编写一个简单的脚本,将每个单元格的"折叠"属性从false转换为true
在笔记本的.ipynb文件(这是一个简单的JSON文件)中。
但是,如果.ipynb格式更改,将来可能会失败。