Notebook输出清理与源码恢复
清除本地nbformat 4 Notebook的输出和执行次数,保留单元源码、附件及元数据精确数字。
- 1添加输入
- 2调整设置
- 3获取结果
工具输入和文件在当前浏览器处理,不会上传。
开始之前
从大量显示输出导致难以打开的Notebook中恢复代码。在不渲染保存输出的情况下删除它们,明确选择根widget状态策略,并下载清理副本及按单元索引的源码清单。
如何使用
- 打开原始.ipynb而不渲染保存输出,或粘贴小份支持格式的Notebook。
- 选择是否清除根widget状态,核对输出删除数和执行次数重置数。
- 下载cleaned.ipynb与cell-sources.json,在Jupyter打开清理副本并核对源码/附件,再自行决定是否执行。
支持范围与限制
一份已选UTF-8 .ipynb文件最多64 MiB,或粘贴JSON最多8 MiB;已选文件优先。支持nbformat 4 minor 0–5,最多200000个JSON值、128层、10000个单元。全部下载合计最多10 MiB,表格显示前200个单元。保留的大量源码、附件或元数据仍可能超过输出预算。
支持代码、Markdown和raw单元,以及保存的stream/error/display_data/execute_result输出。校验结构字段、minor 5唯一ID、source表示和已知元数据字段;重复JSON键、新版单元/输出类型、未知结构扩展与不支持格式版本拒绝。自定义元数据继续作为数据保留。 拼接单元源码的孤立代理码元会拒绝,避免UTF-8哈希默默替换内容。
将每个代码单元的outputs清为空数组、execution_count设为null。显式选项只控制根metadata.widgets。保留source字符串/字符串数组表示、单元顺序、ID、CRLF/中文、Markdown/raw附件、其他元数据与原始大整数/小数token。JSON排版会改变,不覆盖原文件。
不渲染MIME、不运行脚本或单元、不启动内核、不自动去除个人信息。保留的源码、附件、执行时间/信任/自定义元数据可能仍含敏感内容。单元源码JSON保留准确source表示及其拼接后UTF-8 SHA-256,不声称Notebook已经运行或测试通过。
操作示例
示例输入
{"nbformat":4,"nbformat_minor":5,"metadata":{"kernelspec":{"name":"python3","display_name":"Python 3"}},"cells":[{"id":"hello","cell_type":"code","metadata":{},"source":["print(\"hello\")\r\n"],"execution_count":1,"outputs":[{"output_type":"stream","name":"stdout","text":["hello\n"]}]}]}示例参数
{"secondary":"","params":{"spreadsheetSafe":true,"removeWidgets":true}}示例输出
{
"cells": 1,
"codeCells": 1,
"removedOutputs": 1,
"resetExecutionCounts": 1,
"widgetPolicy": "remove root metadata.widgets",
"removedWidgetState": false,
"inputBytes": 288,
"cleanedBytes": 232,
"jsonValues": 21,
"nbformat": 4,
"minor": 5,
"cellReport": [
{
"index": 0,
"type": "code",
"id": "hello",
"sourceBytes": 16,
"sourceSHA256": "f697fb888d89d576cf3e8aecc33581d8c8117b02b2736d55b1e39f85de6c837c",
"removedOutputs": 1,
"executionCountReset": true
}
]
}出现问题时
使用完整nbformat 4 minor 0–5文件、有效单元、minor 5唯一ID及支持输出。回到原工具修正重复键或字段错误;保留内容超过预算时,有意识地拆分并维护必要单元关系。取消后可用未改动原文件或较小有效文件重跑。
常见问题
源码会被删除或执行吗?
不会。source保留原字符串或字符串数组,工具不渲染Notebook MIME数据、不执行单元、不启动内核。
清除输出会清除所有秘密吗?
不会。代码、附件及保留的元数据可能含秘密。widget选项只删除根metadata.widgets,其他执行时间、信任及自定义元数据仍保留。
为什么64 MiB输入仍可能超过输出限制?
预算包含清理Notebook、源码恢复清单及报告。保留大量代码、附件或元数据可能使下载合计超过10 MiB;失败没有部分下载。