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:
- Importa o módulo os
- Importa o módulo atexit
- Importa o módulo readline
- Importa o módulo rlcompleter
- Expande o nome de arquivo de ‘~/.python_history’ para ‘/home/nome_usuário/.python_history’ e grava isso na variável history
- Lê o arquivo de histórico cujo nome foi obtido na linha anterior
- Faz a ligação da tecla TAB com a função de completação
- 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/