从内部以编程方式保存IPython笔记本?

时间:2015-08-26 21:49:06

标签: python ipython ipython-notebook jupyter ipython-magic

我想让一台运行的IPython笔记本进行一些计算+显示一些视觉效果。

一旦IPython笔记本完成,我希望IPython笔记本中的最后一个单元以编程方式保存IPython笔记本。然后我想将笔记本(包含所有输出)复制到另一个目录以保存结果记录。

我可以轻松编写复制位,但我不知道如何以编程方式保存自己的IPython笔记本?这可能吗?提前谢谢!

1 个答案:

答案 0 :(得分:5)

我接受@Taar的评论,并使其成为实际答案,因为它适用于提出问题的原始人和我自己。

from IPython.display import display, Javascript
display(Javascript('IPython.notebook.save_checkpoint();'))

这将创建检查点-与CTRL-s相同。

注意:在Jupiter中,CTRL-s触发一个异步过程,并且文件保存实际上仅在几秒钟后完成。如果要在笔记本中执行阻止保存操作,请使用以下小功能(file_path是笔记本文件的路径):

from time import sleep
from IPython.display import display, Javascript
import hashlib

def save_notebook(file_path):
    start_md5 = hashlib.md5(open(file_path,'rb').read()).hexdigest()
    display(Javascript('IPython.notebook.save_checkpoint();'))
    current_md5 = start_md5

    while start_md5 == current_md5:
        time.sleep(1)
        current_md5 = hashlib.md5(open(file_path,'rb').read()).hexdigest()