jupyter nbconvert没有保存实际输出

时间:2017-09-25 22:46:06

标签: jupyter flush enthought nbconvert

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

我在脚本的末尾放置了以下命令,我在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浏览器中使用jupyter通过enthought canopy。

由于

1 个答案:

答案 0 :(得分:0)

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

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

记住:   - Nbconvert不执行该文件   - Nbconvert是一个独立的过程,它可以神奇地访问浏览器中的内容,这可能是一台不同的机器。

通常这样想:

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

如果您在笔记本的末尾使用此命令以另一种格式保存它,那么您所寻找的是save hooks,它会触发一些代码 - 服务器端 - 每次保存笔记本

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