ipython: друкувати повну історію (не лише поточну сесію)


128

в ipython, я можу використовувати %histабо %historyдрукувати недавню історію, але це тільки друкує історію з поточного сеансу.

Я хотів би надрукувати всю історію, подібно до historyкоманди bash .

Те, що я намагаюся зробити, - це отримати повну історію, щоб потім я міг шукати за допомогою регулярного вираження, бачити, які команди слідують за вказаними командами тощо

Якщо говорити про історію, чи може вона також друкувати часові коди?

СТОРІННЯ ПРИМІТКА : У баші я написав простий скрипт, який друкує історію, і я можу схрестити її за ключові слова. Я бачу часи, коли виконувались певні команди. Я можу вказати -A nабо -B n, де nє ряд рядків AFTERабо BEFOREзадана команда. Це дуже зручно, тому що я можу легко знайти те, що я робив, коли і що наступне, ...

Я шукаю щось подібне ipython


8
IPython зберігає свою історію у файлі history.sqlite в ~/.ipython/profile_default/. Там ви знайдете таблиці: sessions(із часовими позначками) historyта output_history.
користувач3557327

1
@ user3557327 - як я можу отримати доступ до нього зсередини ipython?
user1968963

1
Я не знаю, чи ipython показує інтерфейс до нього, але ви завжди можете отримати доступ до нього безпосередньо за допомогою модуля sqlite3 .
користувач3557327

42
%history -gпокаже вам усе це. -gшукає історію, і якщо ви не надаєте їй шаблону, ви отримуєте все.
Томас К

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.