返回 Skill 列表
extension
分类: 开发与工程无需 API Key

jupyter-notebooks

Jupyter notebook操作:编辑单元格、读取笔记本、执行以及格式转换。在处理.ipynb文件时触发,包括:(1) 创建/编辑/删除/重新排序单元格,(2) 读取笔记本内容,(3) 使用papermill执行笔记本,(4) 转换为HTML/PDF/脚本格式。支持Cursor EditNotebook工具、Jupytext工作流和nbformat。

person作者: jakexiaohubgithub

Jupyter Notebook Operations

Decision Tree

Need to edit a notebook?
├─ In Cursor IDE? → Use EditNotebook tool directly
├─ Structural changes (add/delete/reorder)? → Jupytext workflow
├─ Small edit in single cell? → nbformat micro-edit
├─ Execute and capture outputs? → papermill
└─ Convert format? → nbconvert

EditNotebook Tool (Cursor IDE)

Preferred method in Cursor. Parameters:

| Parameter | Required | Description | |-----------|----------|-------------| | target_notebook | Yes | Path to .ipynb | | cell_idx | Yes | 0-based cell index | | is_new_cell | Yes | true = new cell, false = edit existing | | cell_language | Yes | python, markdown, r, sql, shell, raw, other | | old_string | Yes | Text to replace (empty for new cells) | | new_string | Yes | Replacement content |

Critical rules:

  • Set is_new_cell correctly
  • Include 3-5 lines context in old_string
  • Cannot delete cells (clear content with new_string="")

Jupytext (Structural Edits)

Setup & Sync

# Pair notebook (one-time)
python -m jupytext --set-formats ipynb,py:percent notebook.ipynb

# Always sync before reading .py
python -m jupytext --sync notebook.ipynb
# Or fallback:
python -m jupytext --to py:percent notebook.ipynb -o notebook.py

Edit .py with percent-format

# %% [markdown]
# # Section Title

# %%
import pandas as pd

# %% tags=["parameters"]
param1 = "default"

Sync back (preserve outputs)

python -m jupytext --to ipynb --update notebook.py -o notebook.ipynb

nbformat (Micro-Edits & Batch)

Edit single cell

import nbformat

nb = nbformat.read("notebook.ipynb", as_version=4)
nb["cells"][3]["source"] = nb["cells"][3]["source"].replace("old", "new", 1)
nbformat.write(nb, "notebook.ipynb")

Add new cell

new_cell = nbformat.v4.new_code_cell(source="print('Hello')")
nb["cells"].insert(5, new_cell)

Delete cell

del nb["cells"][3]

papermill (Execute Notebooks)

# Basic
papermill input.ipynb output.ipynb

# With parameters
papermill input.ipynb output.ipynb -p data_path "/path" -p n_samples 1000
import papermill as pm
pm.execute_notebook("input.ipynb", "output.ipynb", parameters={"n_samples": 1000})

nbconvert (Format Conversion)

| Format | Command | |--------|---------| | HTML | jupyter nbconvert --to html notebook.ipynb | | PDF | jupyter nbconvert --to pdf notebook.ipynb | | Script | jupyter nbconvert --to script notebook.ipynb | | Markdown | jupyter nbconvert --to markdown notebook.ipynb |

Execute and convert: jupyter nbconvert --execute --to html notebook.ipynb

Clear outputs: jupyter nbconvert --ClearOutputPreprocessor.enabled=True --inplace notebook.ipynb


Common Issues

| Issue | Solution | |-------|----------| | Outputs lost after sync | Use --update flag with Jupytext | | Kernel not found | jupyter kernelspec list then specify -k python3 | | Large file size | Clear outputs before git commit | | Windows venv | Use .\.venv\Scripts\activate |