【问题标题】:jupyter nbconvert doesn't save actual outputjupyter nbconvert 不保存实际输出
【发布时间】:2017-09-25 22:46:06
【问题描述】:

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

我在 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。

谢谢

【问题讨论】:

  • 当我同样感到困惑时,我意识到我在以前使用过 nbconvert 的 --execute 标志的地方开始错过它。

标签: jupyter flush enthought nbconvert


【解决方案1】:

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

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

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

通常是这样想的:

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

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

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

【讨论】:

  • 感谢您的帮助。你的猜测是正确的。我编辑了我最初的帖子以提供更多细节。我了解您提到的任务流程,但我正在寻找一种不手动运行/保存/关闭/nbconvert 的方法。我写了一个答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-10
  • 2019-01-06
  • 1970-01-01
相关资源
最近更新 更多