如何在 Python 脚本中执行 .ipynb 笔记本文件?

时间:2021-06-02 19:40:41

标签: python jupyter-notebook

我有一个笔记本,需要在 Python 文件中调用它。我知道在另一个笔记本中调用笔记本是使用 %run ./NotebookName 完成的,而在笔记本中调用 Python 模块可以使用 import 来完成。那么如何在Python文件中调用notebook呢?

2 个答案:

答案 0 :(得分:1)

您可以使用 nbconvert 包从 python 中执行 ipython/jupyter 笔记本。 nbconvert 文档中提供了说明:Executing notebooks

这是一个简短的例子

import nbformat
from nbconvert.preprocessors import ExecutePreprocessor

filename = 'NotebookName.ipynb'
with open(filename) as ff:
    nb_in = nbformat.read(ff, nbformat.NO_CONVERT)
    
ep = ExecutePreprocessor(timeout=600, kernel_name='python3')

nb_out = ep.preprocess(nb_in)

输出是一个 ipython/jupyter notebook,包括所有单元格的输出。

答案 1 :(得分:0)

Ipython/Jupyter *.ipynb 笔记本实际上只是具有特定结构的 JSON 文件。要在 python 脚本中执行笔记本的单元格,可以使用 python json 库读取文件,从笔记本单元格中提取代码,然后使用 exec() 执行代码。

这是一个还包括删除任何 ipython 魔术命令的示例:

import json

def strip_magic(source):
    return (xx for xx in source if xx[0] != '%')

filename = 'NotebookName.ipynb'
with open(filename) as ff:
    nb = json.load(ff)

for cell in nb['cells']:
    if cell['cell_type'] == 'code':
        source = strip_magic(cell['source'])
        combined = ''.join(source)
        exec(combined)