最直接的清理方式是kernel → restart & clear output;若文件打不开则用jupyter nbconvert --clearoutputpreprocessor.enabled=true --inplace命令;也可手动编辑json删outputs字段;代码中可用ipython.display.clear_output()实时清除当前cell输出。

Kernel → Restart & Clear Output 是最直接的清理方式
如果你当前 notebook 还能正常打开,且只是想清掉所有 cell 的输出(包括图表、打印文本、错误堆栈等),不用写代码、不装插件,直接点菜单就行:Kernel → Restart & Clear Output。它会重启内核并清空全部输出,保留所有代码和 Markdown 内容。
注意:这个操作不可撤销,但不会删除任何输入内容;如果误点了 Restart & Run All,输出会重新生成,反而更占空间。
用 jupyter nbconvert 批量清除无法打开的 .ipynb 文件
当 notebook 因输出过大(比如存了千张图或大数组)打不开时,Kernel → Restart & Clear Output 失效,必须用命令行预处理:
- 确保已安装
jupyter nbconvert(通常随 Jupyter 自带,没装就pip install jupyter) - 在终端进入 notebook 所在目录,运行:
jupyter nbconvert --ClearOutputPreprocessor.enabled=True --inplace your_notebook.ipynb
- 加
--inplace是直接改原文件;不加则生成新文件,原文件不动 - 该命令只清除
outputs和execution_count字段,不碰source里的代码
手动编辑 .ipynb 文件:删 "outputs": [...] 最稳妥
对结构敏感、或想保留部分输出时,直接用文本编辑器(如 VS Code)打开 .ipynb 文件——它本质是 JSON:
- 搜索
"outputs": [,定位到每个 cell 的输出块 - 把整个
"outputs": [...](含中括号)替换成"outputs": [] - 同时删掉对应的
"execution_count": N(可选,不清除也不影响运行) - 保存后重开 notebook,输出就没了,且不会触发任何内核操作
这是唯一不依赖环境、不重启内核、不丢历史执行状态的方式,适合 CI/CD 流程或自动化脚本里调用。
IPython.display.clear_output() 只清当前 cell 实时输出
代码里动态控制输出,比如训练循环中不想刷屏,用的是运行时函数,不是文件级清理:
- 在 cell 里写:
from IPython.display import clear_output for i in range(100): print(i) clear_output(wait=True) # wait=True 避免闪烁 - 它只影响该 cell 当前运行产生的输出,对已存在的输出无效
- 别和
os.system('clear')混用——后者在 notebook 里根本不起作用
真正麻烦的不是怎么清,而是清完发现 execution_count 还在、图表缓存没释放、或者误删了本该保留的调试输出——动手前先备份 .ipynb 文件。











