我有一个问题,如何在笔记本完成加载后(当内核准备好时)以及用户本人手动执行代码之前,以编程方式清除\清理 Jupyter 笔记本中所有单元格的输出。基本上,我希望笔记本在加载完成后看起来很干净,并且我希望自动完成。
如何将像 clear_output()
这样的命令从单个初始化单元强加到笔记本中的所有其他单元?
谢谢。
最佳答案
对于受信任的笔记本(有关受信任/不受信任的笔记本的详细信息,请参阅 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 输出已被清理,但如果您正在创建笔记本,它应该可以正常工作。如果您不想在每个笔记本中都包含单元格,您甚至可以将整个内容包装到 nbextension 中。
<shameless plug>
请参阅https://github.com/ipython-contrib/jupyter_contrib_nbextensions有关 nbextensions 的示例,或在那里提出问题以建议添加类似的内容
</shameless plug>
关于python - Jupyter:当内核就绪时以编程方式清除所有单元的输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45638720/