【问题标题】:How to reverse the `nbconvert --from python`?如何反转`nbconvert --from python`?
【发布时间】:2015-02-03 13:59:18
【问题描述】:

基本上我想做相反的事情

ipython nbconvert --to python foo.ipynb

IOW,我想以编程方式从 Python 源代码“合成”iPython 笔记本1(可能经过适当注释)。

有什么工具可以做到这一点吗?

FWIW,我是一名资深的 Emacs 用户,并且最近“转换”为 org-mode,因此我特别欢迎与他们配合良好的解决方案。


1 为什么我要这样做?这是一个非常冗长乏味的故事,但简而言之:我必须以 *.ipynb 文件的形式上交一门课的作业,但我不喜欢使用 iPython 笔记本,因为我害怕鼠标,只看文字Emacs 头。恕我直言,在 Emacs 中使用 iPython 笔记本的工具很糟糕,如果它们能正常工作的话(这实际上是故事中“冗长而乏味”的部分)。对我来说,唯一剩下的行动方案就是这篇文章的内容。

【问题讨论】:

  • 现在这是一个第一世界的问题:)。我想问题在于笔记本包含的信息不仅仅是代码。转换ipynb->py 没问题,因为你会丢失信息。转换py->ipynb 需要更多信息...也就是说:笔记本只是json 文件。当然,您可以创建自己的笔记本并通过命令行运行它们,例如使用runipy。更简单的是:在您最喜欢的编辑器中编写代码并将结果复制到笔记本上,然后再提交作业:)
  • @cel 确实,这是第一世界的问题:我有鼠标使用的 RSI;双肩都需要手术;我讨厌使用鼠标是有医学依据的。 (再说一遍,我想不出在 SO 中发布的任何问题 不是 第一世界的问题。)关于您的复制粘贴建议:每个作业都需要用代码填充 20-30 个空白。那是 20-30 次复制粘贴操作。不,谢谢。但是感谢您的 runipy 指针。
  • 很抱歉听到这个消息。 IPython 笔记本不是为通过命令行编辑而设计的。但正如我所说,当然没有人阻止您学习json 文件的结构并使用emacs 操作笔记本。因此,原则上,无需使用 gui 就可以编写和编辑笔记本。当然,这不是一个非常令人愉快的解决方案。但我怀疑对于这个相当不寻常的问题是否有更好的解决方案。

标签: emacs ipython org-mode ipython-notebook


【解决方案1】:

将 py 文件拖到仪表板上应该可以解决问题(在 2.x 版本上),有一些特殊的注释标记可以在正确的位置拆分笔记本。它应该可以通过导入IPython.nbformat 以编程方式实现,该IPython.nbformat 获取所有python api 来创建笔记本。一些代码可能在IPython/html/ 的某个地方,如果你想走这条路并有一个例子,请随时在 IPython-dev ml 上提问,我们很乐意为你提供帮助。这部分代码没有经过很好的用户测试。

你应该看看ipymd (ipynb+md)。 Cyrille 正在用它写一本书,并且处理的问题或多或少与“需要操纵纯文本”相同。

我还将强调 EIN ,但事实上维护的分支将是定期更新的 millejoh 之一。您将能够直接从 emacs、+ 内联图等编辑 ipynb 文件……但我想这是您不喜欢的“在 Emacs 中使用 iPython 笔记本的工具”之一,但未来的读者可能会感兴趣。

最后我只想指出,如果作业是 IPython 笔记本(键入“填空”)并且使用类似 github:jupyter/nbgrader 的内容进行评分,那么通过纯文本可能无法作为 ipynb可能有额外的元数据无法在转换后继续存在。

【讨论】:

    猜你喜欢
    • 2022-12-28
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    • 1970-01-01
    • 2021-07-28
    • 1970-01-01
    • 2014-09-08
    • 1970-01-01
    相关资源
    最近更新 更多