miércoles, 6 de agosto de 2014

Ejecutar comandos del sistema en IPython


Ejecutar comandos


Para ejecutar comandos del sistema desde IPython simplemente tendremos que escribir los comandos anteponiendo el signo de exclamación "!". Ejemplos:

: !ls
: !ipconfig
: !copy archivo1.py archivo2.py


Capturar la salida de un comando en una lista


Cualquier salida de un comando se puede capturar en una lista Python

: lista = !dir

: for linea in lista:
...:     print(linea)
...:    

La lista capturada tiene algunas variantes: lista.n o lista.s devuelve una cadena delimitada por saltos de línea o espacios, respectivamente y lista.p muestra la ruta de los objetos.
: print(lista.n)
Dropbox  logdeantonio  Perfil        TVenLinux  VM
fondo     Marcadores    RedNoteBook  Varios
: print(lista.s)
Dropbox logdeantonio Perfil TVenLinux VM fondo Marcadores RedNoteBook  Varios


Para obtener explícitamente este tipo de salida sin asignar a una variable se pueden utilizar dos signos de exclamación "!!" delante del comando o la función mágica %sx.

In [1]: !!dir
Out[1]:

['Dropbox  logdeantonio  Perfil\t    TVenLinux  VM',
 'fondo\t Marcadores    RedNoteBook  Varios']

o bien

In [2]: %sx dir
Out[2]:

['Dropbox  logdeantonio  Perfil\t    TVenLinux  VM',
 'fondo\t Marcadores    RedNoteBook  Varios']


Usar variables Python en comandos


Para pasar los valores de las variables o expresiones de Python a comandos del sistema debe ir precedidas con el signo "$".

: extension = "*.py"
: !dir $extension


IPython permite utilizar el valor de variables o expresiones de Python cuando se ejecutan comandos del sistema. Para ello deben expresarse entre llaves {}.

: import sys
: sistema = sys.platform
: !echo "Sistema operativo: {sistema}"

Sistema operativo: linux