1. 使用 nbconvert (官方推荐)

Jupyter 自带 nbconvert 工具,可以直接把 .ipynb 转成 .md

jupyter nbconvert --to markdown your_notebook.ipynb

运行后会生成一个 .md 文件,同时图片(比如 matplotlib 绘图)会被导出到一个单独的文件夹,Markdown 会用相对路径引用它们。
适合快速导出,特别是写博客时常用。


2. 使用 nbconvert 的 Python API

如果你想批量转换或者在脚本里用,可以写成 Python 脚本:

from nbconvert import MarkdownExporter
import nbformat

notebook_filename = "your_notebook.ipynb"
output_filename = "output.md"

# 读取 ipynb 文件
with open(notebook_filename, "r", encoding="utf-8") as f:
    nb = nbformat.read(f, as_version=4)

# 转换为 markdown
exporter = MarkdownExporter()
body, resources = exporter.from_notebook_node(nb)

# 写入 markdown 文件
with open(output_filename, "w", encoding="utf-8") as f:
    f.write(body)

这样可以灵活处理,比如把图片单独上传到图床,或者自动清理掉输出。


3. 用 nbconvert + 模板定制

如果你想要更干净的 Markdown(比如不要输出的结果,只保留代码和文字),可以在命令里加参数:

jupyter nbconvert --to markdown your_notebook.ipynb --no-input

这会导出只包含文本和输出结果的 Markdown,不包括代码块。
反之,如果只想保留代码和文本,不要执行输出,可以用:

jupyter nbconvert --to markdown your_notebook.ipynb --no-prompt

还可以自己写 Jinja2 模板,让生成的 Markdown 符合你的风格(比如专门生成适合 Hugo 或者 Hexo 博客系统的格式)。


4. 使用 第三方工具

  • jupytext:可以让 .ipynb.md 文件互相同步,特别适合把 notebook 当成 Markdown 编辑器。
pip install jupytext
jupytext --to md your_notebook.ipynb

甚至可以设置成 Jupyter 自动保存时,生成一个 .md 伴生文件。


总结一下:

  • 如果只是一次性导出:用 jupyter nbconvert --to markdown
  • 如果要长期开启双向同步:用 jupytext
  • 如果想自定义导出规则:用 nbconvert API + 模板。

5.目录下的jupyter一键转换为markdown

1. 程序说明

把当前目录下的所有.ipynb后缀的文件转换为.md格式

2. 使用方法

仅支持windows,把下面内容复制到.txt文件中,然后修改后缀为.bat,双击执行即可

3.注意事项

  1. 本程序仅支持在windows系统运行
  2. 使用程序前要根据实际情况修改activate.bat文件的路径
  3. 使用程序前要根据实际情况修改jupyter的环境名称

4.程序代码

@echo off
REM ==============================
REM convert_notebooks.bat
REM 使用: 双击运行 或者 在命令行运行
REM 默认环境名: d3l,可以传参覆盖
REM ==============================

setlocal enabledelayedexpansion

:: 如果没传参,默认环境为 d3l
set ENV_NAME=%1
if "%ENV_NAME%"=="" set ENV_NAME=d3l

echo Activating conda environment: %ENV_NAME%

:: 找到 conda 初始化脚本,请根据自己安装路径修改(一般是 Miniconda3 或 Anaconda3)
CALL D:\anaconda3\Scripts\activate.bat %ENV_NAME%
IF ERRORLEVEL 1 (
    echo Failed to activate environment. Please check the environment name.
    pause
    exit /b 1
)

echo Conda environment activated: %ENV_NAME%
echo Current directory: %cd%

:: 遍历当前目录下所有 ipynb 文件
set count=0
for %%f in (*.ipynb) do (
    echo Converting: %%f
    jupyter nbconvert --to markdown "%%f"
    set /a count+=1
)

if %count%==0 (
    echo No .ipynb files found in the current directory.
) else (
    echo Conversion completed. Total files processed: %count%
)

pause

Logo

加入社区!打开量化的大门,首批课程上线啦!

更多推荐