最快清空jupyter notebook所有输出的方法是命令行jupyter nbconvert --clearoutputpreprocessor.enabled=true --inplace your_notebook.ipynb,它直接修改json结构删除所有"outputs"字段,不依赖内核运行或前端渲染,适用于文件过大或提交git前清理。

能直接清空所有输出,不用重启内核,也不用逐个点单元格操作 —— 最快的是命令行 jupyter nbconvert + --ClearOutputPreprocessor.enabled=True。
用命令行一次性清空整个 .ipynb 文件的输出
这是处理「文件太大打不开」或「想提交干净代码到 Git」时最可靠的方式。它直接修改 JSON 结构,删掉所有 "outputs" 字段,不依赖 Notebook 是否能正常启动。
- 在终端进入 .ipynb 所在目录,运行:
jupyter nbconvert --ClearOutputPreprocessor.enabled=True --inplace your_notebook.ipynb - 想另存为新文件(保留原文件):
jupyter nbconvert --ClearOutputPreprocessor.enabled=True --to notebook --output=clean_notebook.ipynb your_notebook.ipynb - 注意:
--inplace会直接覆盖原文件;若文件正被 Jupyter 打开,需先关闭,否则可能写入失败 - 该命令不依赖
IPython.display.clear_output(),也不走前端渲染逻辑,所以即使输出里有上万行日志、大图、崩溃堆栈,也能秒清
在已打开的 Notebook 里快速清空全部输出
适合日常调试中临时清理,但要求 Notebook 还能正常加载和响应。
- 菜单操作:点击顶部菜单
Kernel→Restart & Clear Output—— 这会重启内核并清空所有单元格输出 - 快捷键组合(命令模式下):
Esc→0→0(连按两次 0),然后确认 —— 这是「重启内核」的快捷键,附带清输出效果 - ⚠️ 注意:这个操作会丢失所有变量、函数定义和中间状态,不是纯清输出,而是“重来一遍”
- 如果只想清输出、不重启内核,没有内置一键菜单,得靠扩展或脚本(见下一条)
用 Python 脚本批量清除已打开 Notebook 的输出(不重启内核)
当你要保留变量、只清输出,又嫌一个个单元格右键太慢时,可以用这段代码注入当前内核执行:
from IPython.display import clear_output
import json
import os
<h1>清除当前 cell 输出(可选)</h1><p>clear_output(wait=True)</p><div class="aritcle_card flexRow artxards">
<div class="artcardd flexRow">
<a class="aritcle_card_img" rel="nofollow" href="/xiazai/gongju/2552" title="Jupyter Notebook 7.5.4"><img
src="https://img.php.cn/upload/manual/001/221/864/6a6c72cc4e0af240.png" alt="Jupyter Notebook 7.5.4" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
<div class="aritcle_card_info flexColumn">
<a rel="nofollow" href="/xiazai/gongju/2552" title="Jupyter Notebook 7.5.4" class="overflowclass">Jupyter Notebook 7.5.4</a>
<p class="overflowclass">Jupyter Notebook 7.5.4 官方 PyPI wheel 包下载,适合用于本地交互式代码运行、数据分析、教学演示和配置文件实践。</p>
</div>
<a rel="nofollow" href="/xiazai/gongju/2552" title="Jupyter Notebook 7.5.4" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span>
</a>
</div>
</div><h1>遍历所有 cell,清空其 outputs 字段(仅限当前 notebook 文件)</h1><p>nb_path = os.path.abspath('') # 实际使用时需替换为你的 .ipynb 路径</p><h1>⚠️ 注意:此操作需配合 nbformat 库读写文件,且不能在当前正在运行的 notebook 中直接改自己</h1><p></p>
更实用的做法是:退出 Notebook,用外部脚本处理文件。例如:
import json
with open('notebook.ipynb', 'r', encoding='utf-8') as f:
nb = json.load(f)
for cell in nb['cells']:
if 'outputs' in cell:
cell['outputs'] = []
with open('notebook_clean.ipynb', 'w', encoding='utf-8') as f:
json.dump(nb, f, indent=2, ensure_ascii=False)
- 这段代码安全、无依赖、不启动内核,适合加进 CI 流程或预提交钩子
- 关键点:只清
"outputs",不动"source"和"execution_count",保持结构完整 - 别漏掉
ensure_ascii=False,否则中文注释会变 \uXXXX
为什么 clear_output() 不适合清“所有输出”
很多人搜到 from IPython.display import clear_output 就以为能一劳永逸,其实它只作用于「当前 cell 的最新输出」,而且只对后续 print/plot 生效。
-
clear_output()是运行时控制台行为,类似终端里的cls,不影响已渲染的历史输出 - 它对其他 cell 完全无效;循环里调用也只清最后一次输出,不会回溯清前面的
-
wait=True参数只影响刷新时机,解决闪烁问题,不改变作用域 - 如果你在某个 cell 里写了
clear_output(); print("hello"),那只会清掉这行 print 前面的输出,别的 cell 照样纹丝不动
真正要“清除所有输出”,核心就一条:别指望运行时函数,得动文件本身。命令行方式最稳,脚本方式最可控,而菜单里的 Restart & Clear Output 是折中选择 —— 方便但代价高。容易被忽略的是:--inplace 不会备份,操作前最好 cp your.ipynb your_backup.ipynb。










