Me encuentro con frecuencia usando el intérprete de Python para trabajar con bases de datos, archivos, etc., básicamente mucho formateo manual de datos semiestructurados. No guardo ni limpio correctamente los bits útiles con la frecuencia que quisiera. ¿Hay alguna manera de guardar mi entrada en el shell (conexiones db, asignaciones variables, poco para bucles y bits de lógica), algo de historial de la sesión interactiva? Si uso algo como script
, obtengo demasiado ruido stdout. Realmente no necesito encurtir todos los objetos, aunque si hay una solución que lo haga, estaría bien. Idealmente, me quedaría con un script que se ejecutó como el que creé de forma interactiva, y podría eliminar los bits que no necesitaba. ¿Hay un paquete que hace esto, o un enfoque de bricolaje?
ACTUALIZACIÓN : Estoy realmente sorprendido por la calidad y la utilidad de estos paquetes. Para aquellos con una picazón similar:
- IPython: debería haber estado usando esto durante años, algo de lo que tenía en mente
- reinteract : muy impresionante, quiero aprender más sobre la visualización y parece que brillará allí. Una especie de aplicación de escritorio gtk / gnome que muestra gráficos en línea. Imagine una carcasa híbrida + calculadora gráfica + mini eclipse. Distribución de la fuente aquí: http://www.reinteract.org/trac/wiki/GettingIt . Construido bien en Ubuntu, se integra también en instaladores de escritorio gnome, Windows y Mac.
- bpython : extremadamente genial, muchas características agradables, autocompletar (!), rebobinar, guardar una sola tecla en el archivo, sangrado, bien hecho. La distribución de código fuente de Python extrajo un par de dependencias de sourceforge.
Estoy convertido, estos realmente llenan una necesidad entre intérprete y editor.
fuente
In[48]
). Asísave filename 1-48
guardaría toda su sesión.%load my_useful_session
http://www.andrewhjon.es/save-interactive-python-session-history
fuente
Hay una manera de hacerlo. Almacene el archivo en
~/.pystartup
...y luego establezca la variable de entorno
PYTHONSTARTUP
en su shell (por ejemplo, en~/.bashrc
):También puede agregar esto para autocompletar de forma gratuita:
Tenga en cuenta que esto solo funcionará en los sistemas * nix. Como readline solo está disponible en la plataforma Unix.
fuente
readline.parse_and_bind('tab: complete')
funciona si usas MacPorts Python.Si está utilizando IPython , puede guardar en un archivo todos sus comandos anteriores utilizando la función mágica % history con el parámetro -f , pe:
fuente
save
magia. Esto fue muy útil%history -g -f full_history.py
para obtener el historial de todas las sesiones, no solo la actual. Ver también: documentación para% history .Después de instalar Ipython y abrir una sesión de Ipython ejecutando el comando:
desde su línea de comando, simplemente ejecute el siguiente comando 'mágico' de Ipython para registrar automáticamente toda su sesión de Ipython:
Esto creará un archivo .py con un nombre único y almacenará su sesión para su uso posterior como una sesión interactiva de Ipython o para su uso en los scripts que elija.
fuente
Además, reinteract le brinda una interfaz similar a un cuaderno para una sesión de Python.
fuente
reinteract
ahora es reemplazado por IPython Notebook y QtConsole.Además de IPython, una utilidad similar bpython tiene la función "guardar el código que ha ingresado en un archivo"
fuente
Tuve que luchar para encontrar una respuesta, era muy nuevo en el entorno iPython.
Esto funcionará
Si su sesión de iPython se ve así
Desea guardar líneas del 1 al 135 y luego, en la misma sesión de ipython, use este comando
Esto guardará todas sus declaraciones de Python en el archivo test.py en su directorio actual (donde inició el ipython).
fuente
Hay% de magia de historial para imprimir y guardar el historial de entrada (y opcionalmente la salida).
Para almacenar su sesión actual en un archivo llamado
my_history.py
:Historial IPython almacena tanto los comandos que ingresa como los resultados que produce. Puede pasar fácilmente por comandos anteriores con las teclas de flecha hacia arriba y hacia abajo, o acceder a su historial de formas más sofisticadas.
Puede usar la función mágica% history para examinar entradas y salidas pasadas. El historial de entrada de las sesiones anteriores se guarda en una base de datos e IPython se puede configurar para guardar el historial de salida.
Varias otras funciones mágicas pueden usar su historial de entrada, incluyendo% edit,% rerun,% recordar,% macro,% save y% pastebin. Puede usar un formato estándar para referirse a las líneas:
Esto tomará la línea 3 y las líneas 18 a 20 de la sesión actual, y las líneas 1-5 de la sesión anterior.
Ver% historia? para Docstring y más ejemplos.
Además, asegúrese de explorar las capacidades de % store magic para la persistencia ligera de las variables en IPython.
Para restaurar automáticamente las variables almacenadas en el inicio, especifique
c.StoreMagic.autorestore = True
en ipython_config.py.fuente
c.HistoryManager.db_log_output
en el archivo de configuración.Solo pongo otra sugerencia en el cuenco: Spyder
Tiene registro de historia y explorador de variables . Si ha trabajado con MatLab, verá las similitudes.
fuente
En lo que respecta a Linux, uno puede usar el
script
comando para grabar toda la sesión. Es parte delutil-linux
paquete, por lo que debería estar en la mayoría de los sistemas Linux. Puede crear un alias o función que llamescript -c python
y que se guardará en untypescript
archivo. Por ejemplo, aquí hay una reimpresión de uno de esos archivos.Una pequeña desventaja aquí es que
script
registra todo, incluso los saltos de línea, cada vez que pulsa espacios de retroceso, etc. Por lo tanto, puede usarcol
para limpiar la salida (consulte esta publicación en Unix & Linux Stackexchange ).fuente
El
%history
comando es impresionante, pero desafortunadamente no le permitirá guardar cosas que fueron% pegadas en el sesh. Para hacer eso creo que tienes que hacer%logstart
al principio (aunque no he confirmado que esto funcione).Lo que me gusta hacer es
%history -o -n -p -f filename.txt
que guardará la salida, los números de línea y '>>>' antes de cada entrada (opciones o, ny p). Vea los documentos para% history aquí .
fuente
Hay otra opción --- pyslice. en el "wxpython 2.8 docs demos and tools", hay un programa de código abierto llamado "pyslices".
puede usarlo como un editor, y también admite el uso como una consola ---- ejecutando cada línea como un intérprete interactivo con eco inmediato.
por supuesto, todos los bloques de códigos y resultados de cada bloque se registrarán automáticamente en un archivo txt.
Los resultados se registran justo detrás del bloque de código correspondiente. muy conveniente.
fuente
Si usa bpython , todo su historial de comandos se guarda por defecto en
~/.pythonhist
.Para guardar los comandos para su posterior reutilización, puede copiarlos en un archivo de script de Python:
Luego edite ese archivo para limpiarlo y colóquelo en la ruta de Python (paquetes de sitio del entorno global o virtual, directorio actual, mencionando en * .pth, o de alguna otra manera).
Para incluir los comandos en su shell, simplemente impórtelos desde el archivo guardado:
fuente
Algunos comentarios preguntaban cómo guardar todas las entradas de IPython a la vez. Para% save magic en IPython, puede guardar todos los comandos mediante programación como se muestra a continuación, para evitar el mensaje de solicitud y también para evitar especificar los números de entrada. currentLine = len (In) -1% save -f my_session 1- $ currentLine
La
-f
opción se usa para forzar el reemplazo de archivos ylen(IN)-1
muestra el indicador de entrada actual en IPython, lo que le permite guardar toda la sesión mediante programación.fuente
Para aquellos que usan
spacemacs
, yipython
eso viene conpython-layer
, guardar magia crea una gran cantidad de resultados no deseados, debido al comando de autocompletado constante que funciona en segundo plano, como:Para evitar esto, simplemente guarde el búfer de ipython como normalmente guarda cualquier otro:
spc f s
fuente
Me gustaría sugerir otra forma de mantener la sesión de Python a través de tmux en linux. ejecuta tmux, se adjunta a la sesión que abrió (si no se adjunta después de abrirlo directamente). Ejecute Python y haga lo que esté haciendo en él. luego separarse de la sesión. desconectarse de una sesión tmux no cierra la sesión. La sesión permanece abierta.
Ventajas de este método: puede adjuntar a esta sesión desde cualquier otro dispositivo (en caso de que pueda enviar un ssh a su PC)
Contras de este método: este método no renuncia a los recursos utilizados por la sesión de Python abierta hasta que realmente exista el intérprete de Python.
fuente
Para guardar entradas y salidas en XUbuntu :
Terminal
en la barra de menú superior y buscasave contents
en el menú desplegableCreo que esto guarda la entrada y la salida, volviendo a cuando abrí el terminal. Esto no es específico de ipython, y funcionaría con sesiones ssh u otras tareas ejecutadas desde la ventana de terminal.
fuente