ipython: imprime o histórico completo (não apenas a sessão atual)


128

no ipython, posso usar %histou %historyimprimir histórico recente, mas isso só imprime o histórico da sessão atual.

Gostaria de imprimir todo o histórico, semelhante ao historycomando bash .

O que estou tentando fazer é obter um histórico completo, para que eu possa pesquisar com regex, ver quais comandos seguiram após comandos especificados e assim por diante

Falando em história, ele também pode imprimir códigos de tempo?

NOTA LATERAL : No bash, escrevi um script simples que imprime o histórico e posso encontrá-lo por palavras-chave. Vejo momentos em que certos comandos foram executados. Eu posso especificar -A nou -B n, onde nestá um número de linhas AFTERou BEFOREum determinado comando. Isso é muito útil, porque eu posso encontrar facilmente o que fiz quando e o que se seguiu ...

Estou à procura de algo semelhante para ipython


8
O IPython salva seu histórico em um arquivo history.sqlite em ~/.ipython/profile_default/. Lá você encontrará as tabelas: sessions(com registro de data e hora) historye output_history.
user3557327

1
@ user3557327 - como posso acessá-lo de dentro ipython?
user1968963

1
Não sei se o ipython mostra uma interface, mas você sempre pode acessá-lo diretamente com o módulo sqlite3 .
user3557327

42
%history -gmostrará tudo isso. -gpesquisa o histórico e, se você não der um padrão, obtém tudo.
Thomas K

36
%history -g -f filenamepara salvá-lo em arquivo.
Liso

Respostas:


163

Em ipythonenter:

%history -g

Não imprime códigos de tempo, mas imprime o número da sessão / linha.


26

Primeiro use %hist -o -g -f ipython_history.mdpara gerar o histórico (entrada e saída) para um arquivo de texto. ( http://ipython.readthedocs.io/en/stable/interactive/magics.html#magic-history )

Em seguida, você pode usar a get_session_infofunção para recuperar a data e a hora da sessão em que está interessado. ( 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)

Isso imprimirá algo como

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

Isso significa que a sessão 100 começou no dia 13 de fevereiro de 2018 às 19:08:30.


0

Aqui está a extensão do Firefox que @larssend encontrou: SQLite Manager

Possui uma GUI para abrir um arquivo de banco de dados e emitir vários comandos sqlite em um menu. Você recebe o bônus adicional de ver os comandos SQL que geraram a saída. Aqui está o meu para o meu ipython %historyem ~/.ipython/profile_default/history.sqlite:

insira a descrição da imagem aqui

E ainda tem um menu para gerar gráficos (dispersão, linha, barra, etc) a partir dos seus dados!

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.