python 从nbconvert.preprocessors获取部分输出,执行预处理器

vc9ivgsu  于 2023-02-02  发布在  Python
关注(0)|答案(1)|浏览(132)

有没有办法从nbconvert. preprocessors. ExecutePreprocessor获取部分输出?目前,我使用ExecutePreprocessor以编程方式执行我的Jupyter笔记本,它在执行完整个笔记本后返回输出。然而,如果能够在运行笔记本的同时获取并保存部分结果和,那就太好了。例如,如果我在Jupyter笔记本中有一个进度条,有没有一种方法可以连续读取更新的执行输出,这样我就可以看到它的更新?
这是我的当前代码:

import nbformat
from nbconvert.preprocessors import ExecutePreprocessor

with open('./test2.ipynb') as f:
    nb = nbformat.read(f, as_version=4)
    ep = ExecutePreprocessor(timeout=600, kernel_name='python3')
    ep.preprocess(nb)
    print(nb)
    with open('executed_notebook.ipynb', 'w', encoding='utf-8') as f:
        nbformat.write(nb, f)

然而,如果能够连续读取nb变量并在其执行时将其写入文件,那就太好了

tgabmvqs

tgabmvqs1#

我最后做了这样的事

import nbformat
from nbconvert.preprocessors import ExecutePreprocessor
import threading

f = open('./test2.ipynb')
nb = nbformat.read(f, as_version=4)
ep = ExecutePreprocessor(kernel_name='python3')
def save_notebook():
    threading.Timer(1.0, save_notebook).start()
    with open('executed_notebook.ipynb', 'w', encoding='utf-8') as f:
        nbformat.write(nb, f)
save_notebook()

ep.preprocess(nb)

print('ended')

看起来效果很好。如果有人有更好的解决方案,也可以随时发帖

相关问题