Восстановление истории команд в Jupyter Notebook?

Я редактировал Блокнот Jupyter на прошлой неделе и попытался сохранить его сегодня. При попытке сохранить его я получил ошибку, поэтому обновил страницу и успешно сохранил ее.

Однако, к моему ужасу, почти вся моя командная история была потеряна! У меня все еще есть доступ к переменным (ядро никогда не умирает), но у меня нет доступа ни к какому коду.

Есть ли способ восстановить код? Ядро все еще работает, но я не вижу никаких контрольных точек в моей записной книжке.

3 ответа

Решение

Вы можете получить историю IPython, которую Jupyter Notebook использует в качестве своего ядра. В одной из ячеек бегут:

%history

Это выведет историю (хорошую, плохую и уродливую) каждой команды, которую вы выполнили в текущем сеансе IPython. Это, вероятно, больше, чем вы хотите, но это лучше, чем потерять всю свою работу.

Что-то подобное произошло со мной, когда я не мог сохранить то, что сделал, обновил страницу и потерял все свои команды.

Вы можете получить всю историю записной книжки и перенаправить вывод в любой заданный файл, запустив

%history -g -f filename

В моем случае я перенаправил его в файл (.py). Дополнительную документацию можно найти здесь https://ipython.readthedocs.io/en/stable/interactive/magics.html разделе "%history".

Если ваше ядро ​​не перезапустилось, вы можете получить свой код из глобальных файлов, например _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)

и скопируйте его в новую ячейку.

Другие вопросы по тегам