如何从当前笔记本中的另一个笔记本执行单元1

时间:2019-07-01 04:03:13

标签: jupyter-notebook

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

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

1 个答案:

答案 0 :(得分:1)

这是我使用的代码。我在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))