Jupyter:当内核就绪时,以编程方式清除所有单元格的输出

我有一个问题,关于如何以编程方式清除\清理笔记本完成加载后(当内核准备就绪时)我的Jupyter笔记本中所有单元格的输出,以及用户之前,我自己,手动执行代码 . 基本上,我希望笔记本在加载完成后看起来很干净,我想自动完成 .

如何从单个初始化单元格中将 clear_output() 等命令强加到笔记本中的所有其他单元格?

谢谢 .

回答(1)

2 years ago

对于受信任的笔记本电脑(有关受信任/不受信任的笔记本电脑的详细信息,请参阅http://jupyter-notebook.readthedocs.io/en/stable/security.html#Our-security-model,但简而言之,相关的一点是您在计算机上创建的任何内容都应该是可信任的),您可以在开头使用javascript单元格有类似的东西:

require(['base/js/namespace', 'base/js/events'],
function (Jupyter, events) {
    // save a reference to the cell we're currently executing inside of,
    // to avoid clearing it later (which would remove this js)
    var this_cell = $(element).closest('.cell').data('cell');
    function clear_other_cells () {
        Jupyter.notebook.get_cells().forEach(function (cell) {
            if (cell.cell_type === 'code' && cell !== this_cell) {
                cell.clear_output();
            }
            Jupyter.notebook.set_dirty(true);
        });
    }

    if (Jupyter.notebook._fully_loaded) {
        // notebook has already been fully loaded, so clear now
        clear_other_cells();
    }
    // Also clear on any future load
    // (e.g. when notebook finishes loading, or when a checkpoint is reloaded)
    events.on('notebook_loaded.Notebook', clear_other_cells);
});

这将无法在不受信任的笔记本中运行,javascript输出将被清理,但如果您正在创建笔记本,它应该可以正常运行 . 如果你不想在每个笔记本中都有单元格,你甚至可以将整个东西包裹起来 .

<shameless plug> 有关nbextensions的示例,请参阅https://github.com/ipython-contrib/jupyter_contrib_nbextensions,或在那里提出问题建议添加类似这样的内容 </shameless plug>