我有一个笔记本脚本,我在不同的数据集上运行。我希望每次运行时都在数据文件夹中保存脚本,包括输出单元格。
我在脚本的末尾放置了以下命令,我在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。
谢谢
你没告诉我们你是如何运行nbconvert的;从目前的笔记本?因此很难弄清楚事情。
Nbconvert将当前文件转换为磁盘上的文件;一个疯狂的猜测:你没有保存你的文件。如果您不保存文件,那么nbconvert可能无法访问单元格的输出;当你第二次运行自动保存时,再次疯狂猜测。
请记住: - Nbconvert不执行文件 - Nbconvert是一个单独的进程,它无法神奇地访问浏览器中的内容,这可能是另一台机器。
通常这样想:
如果您在笔记本的末尾使用此命令以另一种格式保存它,那么您要查找的是save hooks,它会在每次保存笔记本时触发一些代码 - 服务器端。
旁注,了解如何run shell command in IPython; !
可用于在CWD中执行shell命令并进行变量插值。