Ipython Notebook writefile同时执行单元格

当使用魔术单元%% writefile时,似乎ipython将单元格的内容视为普通txt并且不会执行它 .

有没有办法在单元格中运行代码,然后自动将其导出到某个脚本文件?

这很有用,因为它使您能够以编程方式将笔记本与仅保留笔记本的某些部分的脚本同步 .

在笔记本中,一些代码只是脚手架,下载笔记本作为py脚本将包括这些不必要的代码 . 同时,您可能想要重新构造文档,将两个代码块放在一起,而在笔记本中,它们之间有很多草稿内容 .

丑陋的,所有上述事情都可以通过手动复制代码来完成 . 但它将使未来的维护充满繁琐的重新复制和粘贴工作 .

回答(1)

2 years ago

好吧,似乎那些使用ipython的人不关心我的问题 . 我想我已经自己解决了这个问题 .

实际上,您可以在this post之后编写自己的魔术命令 . 与ipython相关的关键命令是

self.shell.run_cell(cell)

您可以使用上述命令编写首先执行单元格的魔术命令,然后将单元格内容保存到某个文件中 . Ipython将把行和单元格args作为unicode对象传递 .

我已经实现了一个完成以下工作的人 .

  • 运行代码

  • 将代码写入-f arg给出的某个文件

  • 如果给出arg(str),则将代码放在str之前 .

  • 如果给出-indent arg,则写入缩进版本的单元格