2

我有一个在不同数据集上运行的笔记本脚本。我想在每次运行时将脚本(包括输出单元格)保存在数据文件夹中。

我在 jupyter 中运行的脚本末尾放置了以下命令。我打算将我在屏幕上看到的大部分内容保存到 HTML 文件中。

"here is my notebook script with inputs and ouput including graphs"

cmd='jupyter nbconvert --to html odnp_postprocessing.ipynb --output-dir '+dataFolder
os.system(cmd)

但是,nbconvert 不会导出实际的单元格。它只会在我第一次运行时打印出输入单元格而不输出,但如果我重新运行,它最终会同时导出输入和输出。但是,如果我更改脚本中的某些内容,它将始终导出第一个版本。然后我发现的唯一方法是重新启动内核并重新运行(两次)修改后的新脚本。

基本上,它看起来像 nbconvert 导出某种缓冲区,它不一定是用户看到的实际输入和输出单元。

我想要做的是,每次运行时以编程方式将我的笔记本(输入和输出)保存到 HTML 中。

是否有保存当前笔记本版本的命令?我尝试在 nbconvert 命令之前添加 %notebook,但也保存了一大堆旧输入。

我知道我可以在 nbconvert 中运行笔记本,但我想避免它,因为我已经在 jupyter 中手动运行它。

任何想法?

我在 Chrome 浏览器中通过 enthought canopy 使用 jupyter。

谢谢

4

1 回答 1

0

您并没有确切地告诉我们您是如何运行 nbconvert 的;从当前的笔记本?因此很难弄清楚事情。

Nbconvert 转换当前文件在磁盘上的样子;作为一个疯狂的猜测:你还没有保存你的文件。如果您不保存文件,则 nbconvert 可能无法访问单元格的输出;当你第二次运行自动保存时再次疯狂猜测。

请记住: - Nbconvert 不执行文件 - Nbconvert 是一个单独的进程,它无法神奇地访问浏览器中的内容,这可能是另一台机器。

通常这样想:

  • 运行笔记本;
  • 保存笔记本
  • 关闭笔记本
  • 运行 nbconvert。
  • 重新打开笔记本。

如果您在笔记本末尾使用此命令以另一种格式保存它,那么您正在寻找的是每次保存笔记本时都会触发一些代码(服务器端)的保存挂钩。

旁注,了解如何在 IPython 中运行 shell 命令!可用于在 CWD 中执行 shell 命令并进行变量插值。

于 2017-09-26T01:24:38.000 回答