tutorial - ¿Cómo ves el historial completo de comandos en python interactivo?
python tutorial (7)
@ Jason-V, realmente ayuda, gracias. entonces, encontré this ejemplo y compuse para poseer un fragmento.
#!/usr/bin/env python3
import os, readline, atexit
python_history = os.path.join(os.environ[''HOME''], ''.python_history'')
try:
readline.read_history_file(python_history)
readline.parse_and_bind("tab: complete")
readline.set_history_length(5000)
atexit.register(readline.write_history_file, python_history)
except IOError:
pass
del os, python_history, readline, atexit
Estoy trabajando en el intérprete de Python predeterminado en Mac OS X e I Cmd + K (borró) mis comandos anteriores. Puedo revisarlos uno por uno usando las teclas de flecha. ¿Pero hay una opción como la opción --history en bash shell, que te muestra todos los comandos que has ingresado hasta ahora?
Código para imprimir todo el historial (solo para referencia futura):
python2
import readline
for i in range(readline.get_current_history_length()):
print readline.get_history_item(i + 1)
python3
import readline
for i in range(readline.get_current_history_length()):
print (readline.get_history_item(i + 1))
Editar : la nota get_history_item()
está indexada de 1 a n.
Como lo anterior solo funciona para python 2.x para Python 3.x (específicamente 3.5) es similar pero con una ligera modificación:
import readline
for i in range(readline.get_current_history_length()):
print (readline.get_history_item(i + 1))
nota el extra ()
(Usar scripts de shell para analizar .python_history o usar Python para modificar el código anterior es una cuestión de gusto personal y situación)
Con el intérprete de python 3, la historia está escrita para
~/.python_history
Esto debería darle los comandos impresos en líneas separadas:
import readline
map(lambda p:print(readline.get_history_item(p)),
map(lambda p:p, range(readline.get_current_history_length()))
)
Si quieres escribir el historial en un archivo:
import readline
with open(''pyhistory.txt'', ''w'') as f:
for i in range(readline.get_current_history_length()):
f.write(readline.get_history_item(i + 1) + "/n")
Utilice readline.get_current_history_length()
para obtener la longitud y readline.get_history_item()
para ver cada uno.