ipython: wydrukuj pełną historię (nie tylko bieżącą sesję)


132

w ipython, mogę użyć %histlub %historywydrukować najnowszą historię, ale to wyświetla tylko historię z bieżącej sesji.

Chciałbym wydrukować całą historię, podobnie jak historyrobi to polecenie bash .

To, co próbuję zrobić, to uzyskać pełną historię, aby móc następnie wyszukiwać za pomocą wyrażenia regularnego, zobaczyć, jakie polecenia nastąpiły po określonych poleceniach i tak dalej

A propos historii, czy może też drukować kody czasowe?

UWAGA BOCZNA : W bashu napisałem prosty skrypt, który wyświetla historię i mogę go grepować w poszukiwaniu słów kluczowych. Widzę chwile, kiedy niektóre polecenia zostały wykonane. Mogę podać -A nlub -B n, gdzie nto liczba linii AFTERlub BEFOREdana komenda. Jest to bardzo przydatne, ponieważ mogę łatwo znaleźć to, co zrobiłem, kiedy i co nastąpiło ...

Szukam czegoś podobnego ipython


8
IPython zapisuje swoją historię w pliku history.sqlite w formacie ~/.ipython/profile_default/. Tam znajdziesz tabele: sessions(ze znacznikami czasu) historyi output_history.
user3557327

1
@ user3557327 - jak mogę uzyskać do niego dostęp od wewnątrz ipython?
user1968963

1
Nie wiem, czy ipython pokazuje interfejs do niego, ale zawsze możesz uzyskać do niego bezpośredni dostęp za pomocą modułu sqlite3 .
user3557327

43
%history -gpokaże ci to wszystko. -gprzeszukuje historię i jeśli nie podasz jej żadnego wzorca, otrzymasz wszystko.
Thomas K

38
%history -g -f filenameaby zapisać go do pliku.
Liso

Odpowiedzi:


170

W ipythonwejściu:

%history -g

Nie drukuje kodów czasowych, ale numer sesji / linii.


27

Najpierw użyj, %hist -o -g -f ipython_history.mdaby wyświetlić historię (dane wejściowe i wyjściowe) do pliku tekstowego. ( http://ipython.readthedocs.io/en/stable/interactive/magics.html#magic-history )

Następnie możesz skorzystać z get_session_infofunkcji, aby pobrać datę i godzinę interesującej Cię sesji. ( 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)

To wydrukuje coś takiego

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

Oznacza to, że sesja 100 rozpoczęła się 13 lutego 2018 roku o 19:08:30.


0

Oto rozszerzenie Firefoksa znalezione przez @larssend : SQLite Manager

Posiada GUI do otwierania pliku bazy danych i wydawania różnych poleceń sqlite z menu. Dodatkową korzyścią jest zobaczenie poleceń SQL, które wygenerowały dane wyjściowe. Oto moje dla mojego ipythona %historyw ~/.ipython/profile_default/history.sqlite:

wprowadź opis obrazu tutaj

Ma nawet menu do generowania wykresów (punktowych, liniowych, słupkowych itp.) Na podstawie danych!

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.