【发布时间】:2018-06-30 14:40:51
【问题描述】:
过去一周我一直在编辑 Jupyter Notebook,今天尝试保存它。在尝试保存时遇到错误,所以我刷新了页面并成功保存。
然而,令我沮丧的是,我几乎所有的命令历史都丢失了!我仍然可以访问变量(内核从未死亡),但我无法访问任何代码。
有没有办法恢复代码?内核仍在运行,但我的笔记本中没有看到任何检查点。
【问题讨论】:
标签: python python-3.x ipython jupyter-notebook jupyter
过去一周我一直在编辑 Jupyter Notebook,今天尝试保存它。在尝试保存时遇到错误,所以我刷新了页面并成功保存。
然而,令我沮丧的是,我几乎所有的命令历史都丢失了!我仍然可以访问变量(内核从未死亡),但我无法访问任何代码。
有没有办法恢复代码?内核仍在运行,但我的笔记本中没有看到任何检查点。
【问题讨论】:
标签: python python-3.x ipython jupyter-notebook jupyter
您可以获取 Jupyter Notebook 用作其内核的 IPython 历史记录。在其中一个单元格中运行:
%history
这将转储您在当前 IPython 会话中运行的每个命令的历史记录(好的、坏的和丑陋的)。这可能比你想要的多,但总比失去所有工作要好。
【讨论】:
类似的事情发生在我身上,我无法保存我所做的事情,刷新了页面,并丢失了所有命令。
您可以通过运行获取整个笔记本历史记录并将输出重定向到任何给定文件
%history -g -f filename
在我的例子中,我将它重定向到一个 (.py) 文件。您可以在“%history”下的https://ipython.readthedocs.io/en/stable/interactive/magics.html 找到更多文档。
【讨论】:
%history -g -f filename 生成了一个包含数百万行的文件,我什至可以在其中找到我写过的最初几行 python。这太棒了,这个答案需要更多的支持。
如果您的内核尚未重新启动,您可以从全局变量(如 _i{1,2,3,...})获取代码。
查找代码的最简单方法是运行类似
print([k for k, v in globals.items() if 'some unique code snippet' in str(v)])
假设你有 ['_i2', '_i5', '_i9'] 之类的东西,那么你可以
print(_i9)
并将其复制粘贴到新单元格。
【讨论】: