Histórico de comandos no shell Python

Dando sequência ao post anterior, vamos a algumas modificações no arquivo de configurações .pythonrc para que possamos habilitar, além da completação por tab, também a gravação e recuperação do histórico de comandos digitados em sessões anteriores. Tal recurso permite que, ao abrirmos uma nova sessão de um shell Python, possamos recuperar a lista de comandos executados nas sessões anteriores, através da tecla up arrow (seta para cima).

import os
import atexit
import readline
import rlcompleter
history = os.path.expanduser('~/.python_history')
readline.read_history_file(history)
readline.parse_and_bind('tab: complete')
atexit.register(readline.write_history_file, history)

Modifique seu arquivo .pythonrc para que fique como o trecho de código acima¹. As linhas em vermelho são as linhas que foram inseridas no arquivo de configuração apresentado no post anterior. Dessa forma, seu histórico de comandos digitados no shell python será gravado no arquivo /home/nome_usuário/.python_history, sempre que você sair do shell Python.

Nota: Só pra lembrar que nesse ponto você deve ter configurado a variável de ambiente PYTHONSTARTUP para carregar o arquivo de configuração, adicionando no seu ~/.bashrc a linha:
export PYTHONSTARTUP=~/.pythonrc

Até aí, tudo OK. Mas e como isso funciona? O que significam as linhas de código que você vai inserir em seu arquivo de configurações do Python? Abaixo segue uma lista, linha por linha, explicando brevemente o que o código acima faz:

  1. Importa o módulo os
  2. Importa o módulo atexit
  3. Importa o módulo readline
  4. Importa o módulo rlcompleter
  5. Expande o nome de arquivo de ‘~/.python_history’ para ‘/home/nome_usuário/.python_history’ e grava isso na variável history
  6. Lê o arquivo de histórico cujo nome foi obtido na linha anterior
  7. Faz a ligação da tecla TAB com a função de completação
  8. Registra a função de gravação do arquivo de histórico para que seja executada sempre que o shell python for finalizado

Pronto, é isso. Agora faça o teste, abra um shell python, digite alguns comandos e feche. Abra novamente o shell python e pressione a tecla seta para cima e verifique se os comandos foram armazenados no histórico. Edit: caso o arquivo ~/.python_history não exista, ocorrerá um erro ao abrir o shell Python. Isso pode ser solucionado criando o arquivo vazio antes (touch ~/.python_history).

¹ Baseado no arquivo de configurações apresentado em: http://valueerror.wordpress.com/2009/11/03/python-shell-history-autocompletion-and-rc-file/

Anúncios

3 comentários sobre “Histórico de comandos no shell Python

  1. Pingback: Alternativas ao shell Python padrão « Python Help

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s