在notebook文件夹下输入
ls -a
其中有两个文件夹
.ipynb_checkpoints
.ipython
- 先检查有没有快照,也就是
.ipynb_checkpoints
文件夹下有没有-checkpoint.ipynb
后缀的文件,如果有copy出来看一下有没有丢失的代码,如果有直接用这个文件就可以了,如果没有继续往下看 cd .ipython/profile_default/
打开history.sqlite看一下有没有丢失的代码,建议用关键字搜一下(肯定有,都不用看,但是这里面都是二进制形式的,虽然找到了但是看不懂- 执行
sqlite3 history.sqlite
进入sqlite数据库(如果没有sqlite需要自行安装 select sessions.session, sessions.start, sessions.end, history.source from sessions join history using (session) where start > '2024–01–15' and start < '2024–01–17';
自行替换成你丢失代码之前执行的日期,我试过了不能用=2024-01-16- 解析session,这里的session_id一般来说从下往上找第一个数字
select '# @@ Cell '|| line || char(10) || source || char(10) from history where session = session_id;
比如我的返回结果为888|2024-01-15 18:18:10.056115||代码
那么888就是session_id
我丢的代码并不多,并且执行顺序很乱,所以我没有把结果保存成文件再转成ipynb格式,直接从后往前把代码copy进我的notebook,就到此结束了
如果需要写成notebook,看原文:https://medium.com/flatiron-engineering/recovering-from-a-jupyter-disaster-27401677aeeb