viernes, 8 de agosto de 2014

Registrar y ejecutar sesiones de IPython



Registrar una sesión de trabajo


Es posible registrar todas las entradas (y salidas) de una sesión en un archivo "LOG" añadiendo al ejecutable "ipython" el argumento "--logfile=archivolog", o bien, activando dicho registro durante una sesión interactiva con la función mágica %logstart.

Un archivo "LOG" puede ser ejecutado cuando se deseen repetir los mismos comandos de una sesión anterior.

Para activar el registro de entradas durante una sesión de trabajo:

: %logstart -o [nombrearchivolog] [modo]
  • La opción "-o" hará que se registren también las salidas. 
  • Si no se especifica nombre de archivo se utilizará el nombre predeterminado "ipython_log.py" y será almacenado en el directorio actual con el modo "rotate" activado por defecto.
  • Si se especifica un nombre de archivo se almacenará en el directorio actual usando el modo "backup".

Modos de registro:
  • over: Sobreescribir el archivo de log.
  • backup: Renombrar (si existe) a log_name~ y comenzar un nuevo archivo log_name.
  • append: Añadir la información al archivo existente.
  • rotate: Crear "LOGs" numerados con la información de sesiones anteriores.

Ejemplo:

: %logstart sesion-01.ipy  # Comenzará el registro en modo backup

Detener y reanudar el registro


Las funciones %logoff y %logon permiten detener temporalmente y reanudar el registro en un archivo que previamente se había iniciado con la función %logstart. Con la función %logstop terminaremos definitivamente el registro y con la función mágica %logstate podremos consultar en cualquier momento el estado del registro.


Para detener el registro temporalmente:

: %logoff

Para iniciar de nuevo el registro:

: %logon

Para detener el registro definitivamente y cerrar el archivo LOG:

: %logstop
 
Para consultar el estado del registro:

: %logstate

Ejemplo:

In [1]: %logstart sesion-01.ipy
Activating auto-logging. Current session state plus future input saved.
Filename       : sesion-1.py
Mode           : backup
Output logging : False
Raw input log  : False
Timestamping   : False
State          : active

In [2]: !ls *.ipy
total 1
-rw-rw-r-- 1 usuario usuario  238 jul 22 23:21 sesion-1.ipy


In [3]: %pwd
Out[3]: '/home/usuario/Local'

In [4]: %logstop

In [5]: %logstate
Logging has not been activated.


Contenido del archivo de registro "sesion-1.ipy":

# IPython log file

get_ipython().magic('logstart sesion-1.ipy')
get_ipython().system('ls *.ipy')
get_ipython().magic('pwd')
get_ipython().magic('logstop')

Editar y Ejecutar un archivo de LOG


Para ejecutar un archivo de "LOG" lo primero que debemos hacer es editar su contenido para suprimir aquellas líneas que no sean necesarias y cambiar lo que consideremos oportuno.

Para editar un archivo y ejecutar su contenido inmediatamente después:


: %edit sesion-01.ipy

En un equipo con GNU/Linux se editarán los archivos con el editor "vi". Si no conoce los comandos de este editor puede cambiarlo por otro que le resulte más cómodo: Ver Editar y depurar scripts en IPython.

Para ejecutar un archivo directamente:

: %run sesion-01.ipy