ipython: imprime el historial completo (no solo la sesión actual)

128

en ipython, puedo usar %histo %historyimprimir el historial reciente, pero esto solo imprime el historial de la sesión actual.

Me gustaría imprimir todo el historial, similar al historycomando bash .

Lo que intento hacer es obtener un historial completo, de modo que pueda buscar con expresiones regulares, ver qué comandos siguieron después de los comandos especificados, y así sucesivamente

Hablando de historia, ¿también puede imprimir códigos de tiempo?

NOTA LATERAL : En bash, he escrito un script simple que imprime el historial y puedo buscar palabras clave. Veo momentos en que se ejecutaron ciertos comandos. Puedo especificar -A no -B n, donde nhay varias líneas AFTERo BEFOREun comando dado. Esto es muy útil, porque puedo encontrar fácilmente lo que hice cuando, y lo que siguió, ...

Estoy buscando algo similar para ipython

usuario1968963
fuente
8
IPython guarda su historial en un archivo history.sqlite en ~/.ipython/profile_default/. Allí encontrará las tablas: sessions(con marcas de tiempo) historyy output_history.
user3557327
1
@ user3557327: ¿cómo puedo acceder desde dentro ipython?
user1968963
1
No sé si ipython le muestra una interfaz, pero siempre puede acceder a ella directamente con el módulo sqlite3 .
user3557327
42
%history -gte lo mostrará todo. -gbusca en el historial, y si no le das ningún patrón, obtienes todo.
Thomas K
36
%history -g -f filenamepara guardarlo en el archivo.
Liso

Respuestas:

163

En ipythonentrar:

%history -g

No imprime códigos de tiempo pero sí imprime el número de sesión / línea.

buey.
fuente
26

Primero se usa %hist -o -g -f ipython_history.mdpara generar el historial (entrada y salida) en un archivo de texto. ( http://ipython.readthedocs.io/en/stable/interactive/magics.html#magic-history )

Luego puede usar la get_session_infofunción para recuperar la fecha y la hora de la sesión que le interese. ( 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)

Esto imprimirá algo como

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

Esto significa que la sesión 100 comenzó el 13 de febrero de 2018 a las 19:08:30.

alpha_989
fuente
0

Aquí está la extensión de Firefox que encontró @larssend : SQLite Manager

Tiene una GUI para abrir un archivo de base de datos y emitir varios comandos sqlite desde un menú. Obtiene la ventaja adicional de ver los comandos SQL que generaron la salida. Aquí está el mío para mi ipython %historyen ~/.ipython/profile_default/history.sqlite:

ingrese la descripción de la imagen aquí

¡E incluso tiene un menú para generar trazados (dispersión, línea, barra, etc.) a partir de sus datos!

encimeras
fuente