ipython: распечатать полную историю (а не только текущий сеанс)


128

in ipython, я могу использовать %histили %historyдля печати недавней истории, но это печатает только историю из текущего сеанса.

Я хотел бы распечатать всю историю, как это historyделает команда bash .

Что я пытаюсь сделать, так это получить полную историю, чтобы затем я мог выполнять поиск с помощью регулярного выражения, видеть, какие команды следовали за указанными командами, и т. Д.

Кстати об истории, может ли он также печатать временные коды?

ПРИМЕЧАНИЕ : В bash я написал простой скрипт, который печатает историю, и я могу найти его по ключевым словам. Я вижу случаи, когда выполнялись определенные команды. Я могу указать -A nили -B n, где nэто количество строк AFTERили BEFOREзаданная команда. Это очень удобно, потому что я могу легко найти, что я делал, когда и что последовало, ...

Ищу что-то подобное для ipython


8
IPython сохраняет свою историю в файле history.sqlite в формате ~/.ipython/profile_default/. Там вы найдете таблицы: sessions(с отметками времени) historyи output_history.
user3557327 04

1
@ user3557327 - как мне получить к нему доступ изнутри ipython?
user1968963 04

1
Я не знаю, показывает ли ipython интерфейс к нему, но вы всегда можете получить к нему доступ напрямую с помощью модуля sqlite3 .
user3557327 04

42
%history -gпокажу вам все это. -gищет в истории, и если вы не укажете шаблон, вы получите все.
Thomas K

36
%history -g -f filenameчтобы сохранить его в файл.
Лисо

Ответы:


163

При ipythonвходе:

%history -g

Он не печатает временные коды, но печатает номер сеанса / строки.


26

Сначала используйте %hist -o -g -f ipython_history.mdдля вывода истории (ввода и вывода) в текстовый файл. ( http://ipython.readthedocs.io/en/stable/interactive/magics.html#magic-history )

Затем вы можете использовать get_session_infoфункцию для получения даты и времени интересующего вас сеанса. ( Http://ipython.readthedocs.io/en/stable/api/generated/IPython.core.history.html?highlight= hist # IPython.core.history.HistoryAccessor.get_session_info )

profile_hist=IPython.core.history.HistoryAccessor(profile='default')
profile_hist.get_session_info(100)

Это напечатает что-то вроде

(100, datetime.datetime(2018, 2, 13, 19, 8, 30, 40691), None, None, '')

Это означает, что сессия 100 началась 13 февраля 2018 года в 19:08:30.


0

Вот расширение Firefox, которое обнаружил @larssend : SQLite Manager

Он имеет графический интерфейс для открытия файла базы данных и выполнения различных команд sqlite из меню. Вы получаете дополнительный бонус, видя команды SQL, которые сгенерировали вывод. Вот мой для моего ipython %historyв ~/.ipython/profile_default/history.sqlite:

введите описание изображения здесь

И у него даже есть меню для создания графиков (разброс, линия, столбец и т. Д.) Из ваших данных!

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.