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

如何通过终端命令运行.ipynb文件中的指定代码单元格

在终端运行Jupyter Notebook的特定代码单元格

以下是两种可行的方案,帮你精准运行指定的代码单元格:

方案一:利用nbconvert + 自定义过滤脚本

nbconvert是Jupyter官方工具,通过自定义预处理脚本可以筛选出需要运行的单元格:

  1. 新建一个名为filter_cells.py的脚本,内容如下:
from nbconvert.preprocessors import Preprocessor

class CellFilter(Preprocessor):
    def __init__(self, keep_indices, **kwargs):
        super().__init__(**kwargs)
        # 索引从0开始计数,比如要运行第2、3个单元格,对应索引1和2
        self.keep_indices = keep_indices

    def preprocess_cell(self, cell, resources, cell_index):
        # 只保留指定索引的代码单元格
        if cell_index in self.keep_indices and cell.cell_type == 'code':
            return cell, resources
        else:
            # 移除不需要的单元格
            return None, resources
  1. 在终端执行以下命令(替换your_notebook.ipynb为你的文件名,[1,2]为要保留的单元格索引):
jupyter nbconvert --to notebook --execute --preprocessors filter_cells.CellFilter --preprocessor-args "keep_indices=[1,2]" your_notebook.ipynb --output temp_run.ipynb

执行后会生成包含指定单元格运行结果的临时文件temp_run.ipynb,若无需保留结果,可添加--no-input参数。

方案二:直接用Python脚本提取并运行单元格

如果不想依赖nbconvert,可以直接读取Notebook的JSON结构,提取代码并执行:

新建一个run_specific_cells.py脚本,内容如下:

import json

def run_cells(notebook_path, cell_indices):
    with open(notebook_path, 'r', encoding='utf-8') as f:
        nb = json.load(f)
    
    for idx, cell in enumerate(nb['cells']):
        if idx in cell_indices and cell['cell_type'] == 'code':
            # 提取单元格代码
            code = ''.join(cell['source'])
            # 执行代码
            exec(code, globals())

if __name__ == '__main__':
    # 替换为你的Notebook路径和目标单元格索引(从0开始)
    run_cells('your_notebook.ipynb', [1, 2])

然后在终端运行:

python run_specific_cells.py

注意事项

  • Jupyter Notebook的单元格索引从0开始计数,比如你说的「第2和第3个单元格」,对应的索引是1和2,请根据实际情况调整。
  • 如果单元格之间存在依赖(比如第3个单元格依赖第2个的变量),确保选中的索引包含所有依赖的单元格。

内容的提问来源于stack exchange,提问作者Tina

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 05:24:31