我想让一台运行的IPython笔记本进行一些计算+显示一些视觉效果。
一旦IPython笔记本完成,我希望IPython笔记本中的最后一个单元以编程方式保存IPython笔记本。然后我想将笔记本(包含所有输出)复制到另一个目录以保存结果记录。
我可以轻松编写复制位,但我不知道如何以编程方式保存自己的IPython笔记本?这可能吗?提前谢谢!
答案 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()