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

Jupyter notebook 如何从当前笔记本中的另一个笔记本执行单元格1,jupyter-notebook,Jupyter Notebook,我在目录dir1中有一堆笔记本,我想写一个主笔记本,执行dir1中每个笔记本的第一个单元格。dir1中的所有笔记本都在单元格1中进行了降价描述。因此,通过执行其中的第一个单元格,主笔记本将在dir1中记录所有笔记本。这听起来很容易做到,但我不知道如何进行 一个更普遍的问题是,是否有软件可以提取dir1中所有笔记本电脑的单元格1中的降价,并从中创建一个漂亮的主笔记本?nbsphinx生成一个html文档,但我希望它更轻量级、更快。以下是我使用的代码。我在dir1中创建了一个名为SUMMARY.ip

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


一个更普遍的问题是,是否有软件可以提取dir1中所有笔记本电脑的单元格1中的降价,并从中创建一个漂亮的主笔记本?nbsphinx生成一个html文档,但我希望它更轻量级、更快。

以下是我使用的代码。我在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))
导入操作系统
导入json
从IPython.display导入显示,标记
#此文件的名称
此名称='SUMMARY.ipynb'
fname_to_md={}
对于os.listdir('./')中的fname:
如果fname[-6:::='.ipynb'和fname!=此名称:
#打印('----------',fname)
将open(fname,'r',encoding=“utf-8”)作为f:
fdata=json.load(f)
fname_to_md[fname]=''.join(fdata['cells'][0]['source'])
#打印(fname\u至\u md)
前sep='\n\n%%%
完整\u md=“”
对于fname,fname\u中的md到\u md.items():
九月前
sep+='[]\n\n'
全方位md+=sep+md
显示(降价(满刻度))

如果要提取的单元格只是降价,则无需运行笔记本。笔记本只是JSON文件。在脚本或主笔记本中,您可以打开每个文件,获取第一个单元格并保存一个新笔记本,比如说
summary.ipynb
,在其中收集所有第一个单元格。好的,我可以使用os.listdir()获取文件,我可以使用json加载文件并访问第一个单元格。所以我认为我能够创建第一个单元格中的字符串列表。然后我可以创建一个连接所有子字符串的巨大字符串。我如何打开一个新的笔记本并将巨大的字符串放入一个单元格?好吧,我还没有编码它,但我想我可以在当前的笔记本上做任何事情。无需创建新笔记本。一旦我得到巨型字符串,我就可以说display(Markdown(giant_string))希望display(Markdown())能够解释jupyter Markdown单元格使用的标记超集。不知道,是的。工作得很漂亮。按照我的上一个计划,我没有创建新的笔记本,我只是组装我的巨串并使用显示器(Markdown(巨串))