Jupyter 获取任意笔记本单元格内容

Dus*_*zza 8 python ipython jupyter jupyter-notebook

我想从 Python 访问笔记本中另一个单元格的文本内容,以便我可以将其提供给单元测试脚本,无论它是否已执行。看起来这应该是可能的,但是我在 IPython 内核中找不到合适的 API 来做到这一点。想法?

这个问题提出了同样的问题,但除非必须,否则我真的不想使用魔法。理想情况下,工作流程是“选择小部件选择”,然后是“单击小部件”以运行测试。

背景

我正在和一些学生一起教他们 Python,在过去,当我这样做时,我设置了一堆单元测试,然后提供了有关如何通过 shell 脚本运行测试的说明。但是,我正在与一些在家中无法使用计算机的学生一起工作,因此我决定尝试使用 Jupyter 笔记本环境(通过 mybinder.org)让他们做同样的事情。我已经通过一些 ipywidgets 和一个帮助脚本来运行大部分代码,该脚本在一些任意代码集上运行单元测试。

Way*_*yne 12

就已运行的单元而言,https://ipython.readthedocs.io/en/stable/interactive/reference.html#input-caching-system中描述的输入和输出缓存系统可能很有用。(其使用示例位于/sf/answers/1956686301/)。它在 Jupyter 笔记本中工作,如下所示。(可以在此处查看/访问相应的笔记本。) 在此输入图像描述


因为@A. Donda 在下面的评论中提出了 Markdown 的问题,我将在此处添加提供与保存的nbformat笔记本文件一起使用的相关功能。读取保存的笔记本文件,允许获取单元格和内容,无论它是代码还是 Markdown,并对单元格是 Markdown 还是代码进行排序等。我在 Jupyter Discourse 论坛上发布了许多使用 nbformat 的示例,可以通过此处的搜索看到列出的内容。它提供了比相关命令更多的实用程序,在此处的注释中突出显示用于读取笔记本文件,因为自动包含了附加笔记本上下文。nbformatjson.load(open('test.ipynb','r'))