23

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

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

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

4

2 回答 2

16

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

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

这将创建检查点 - 与CTRL-s.

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

import time
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()
于 2019-09-06T01:30:02.080 回答
4

ipython 魔术命令%notebook将在这里为您提供帮助。它显示在此页面上(搜索 %notebook)。

要将您当前的笔记本历史记录保存到文件“foo.ipynb”中,只需输入:

%notebook -e foo.ipynb

在你希望它发生的时候

于 2015-08-26T22:09:54.063 回答