首页 > 解决方案 > 如何从当前笔记本中的另一个笔记本执行单元格 1

问题描述

我在目录 dir1 中有一堆笔记本,并且想编写一个主笔记本来执行 dir1 中每个笔记本的第一个单元格。dir1 中的所有笔记本都在单元格 1 中描述自己的降价。因此,通过执行所有笔记本的第一个单元,主笔记本将记录 dir1 中的所有笔记本。这听起来很容易做到,但我不知道如何进行。

一个更普遍的问题是,是否有软件可以提取 dir1 中所有笔记本的单元格 1 中的降价并从中创建一个不错的主笔记本?nbsphinx 生成一个 html 文档,但我想要更轻量级和更快的东西。

标签: jupyter-notebook

解决方案


这是我使用的代码。我在 dir1 内部创建了一个笔记本SUMMARY.ipynb,并将这段代码放入了SUMMARY.ipynb 的单元格中。运行此单元格会生成 dir1 中所有笔记本的漂亮摘要,并带有指向它们的链接

import os
import json
from IPython.display import display, Markdown

# the name of this file
this_fname = 'SUMMARY.ipynb'
fname_to_md = {}
for fname in os.listdir('./'):
    if fname[-6:] == '.ipynb'  and fname != this_fname:
        # print('------------', fname)
        with open(fname, 'r', encoding="utf-8") as f:
            fdata = json.load(f)
            fname_to_md[fname] = ''.join(fdata['cells'][0]['source'])
            # print(fname_to_md)
pre_sep = '\n\n<span style="color:red">%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%</span>\n\n'
full_md = ''
for fname, md in fname_to_md.items():
    sep = pre_sep
    sep += '[<a href="' + fname + '" target= "_blank">' + fname + '</a>]\n\n'
    full_md += sep + md
display(Markdown(full_md))

推荐阅读