You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Jupyter Notebook内自动导出无输出的.py版本用于版本控制

在Jupyter Notebook内自动导出无输出.py版本用于版本控制

如果你想在Notebook内部自动导出不含输出的.py文件(方便版本控制),可以用以下两种方案:

方案一:用IPython魔法命令快速执行

直接在代码单元格里通过!前缀调用jupyter nbconvert命令,搭配清除输出的参数即可:

步骤1:自动获取当前Notebook文件名

不用手动输入文件名,用这段代码自动获取:

from IPython.display import Javascript
import os

def get_notebook_name():
    display(Javascript('IPython.notebook.kernel.execute("notebook_name = " + "\'"+IPython.notebook.notebook_path+"\'");'))
    try:
        return os.path.basename(notebook_name)
    except NameError:
        return "请重新运行此单元格获取文件名"

notebook_file = get_notebook_name()

步骤2:执行导出命令

运行下面的命令,生成无输出的.py文件:

!jupyter nbconvert --to python --ClearOutputPreprocessor.enabled=True {notebook_file}

执行后会生成和原Notebook同名的.py文件,里面只有代码和注释,所有输出内容都会被清除。

方案二:用Python subprocess模块定制导出

如果需要指定导出目录、捕获执行状态等定制化操作,用subprocess模块更灵活:

import subprocess
import os
from IPython.display import Javascript

# 获取当前Notebook文件名
def get_notebook_name():
    display(Javascript('IPython.notebook.kernel.execute("notebook_name = " + "\'"+IPython.notebook.notebook_path+"\'");'))
    try:
        return os.path.basename(notebook_name)
    except NameError:
        raise Exception("无法获取Notebook文件名,请重新运行此单元格")

notebook_file = get_notebook_name()
# 自定义导出目录,可根据需求修改
output_dir = "./version_control"

# 自动创建导出目录(不存在时)
os.makedirs(output_dir, exist_ok=True)

# 构建导出命令
export_cmd = [
    "jupyter", "nbconvert",
    "--to", "python",
    "--ClearOutputPreprocessor.enabled=True",
    "--output-dir", output_dir,
    notebook_file
]

# 执行命令并捕获结果
run_result = subprocess.run(export_cmd, capture_output=True, text=True)

# 反馈执行状态
if run_result.returncode == 0:
    py_file_path = os.path.join(output_dir, os.path.splitext(notebook_file)[0] + ".py")
    print(f"导出成功!无输出.py文件路径:{py_file_path}")
else:
    print(f"导出失败,错误信息:{run_result.stderr}")

注意事项

  • --ClearOutputPreprocessor.enabled=True是核心参数,确保导出的.py文件不含任何Notebook输出,完全适配Git等版本控制系统。
  • 可以把导出代码放在Notebook的最后一个单元格,每次运行完Notebook后执行,自动完成导出操作。

内容的提问来源于stack exchange,提问作者Kouichi C. Nakamura

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 13:33:13