obtener por consola la salida de un comando del sistema operativo

Arnau Sanchez arnau en ehas.org
Dom Feb 11 23:17:57 CET 2007


Jesús Espino escribió:

> En python con os.system la salida va a la salida estandar y el valor
> de retorno es el  valor de salida del comando ejecutado. Para obtener
> la salida que de el comando tendrias que usar tuberias, por ejemplo:
> 
> tuberia = os.popen("nslookup google.es")
> tuberia.read()
> 
> La variable "tuberia" es un descriptor de fichero, y para hacer cosas
> con el lo puedes usar como tal.

Desde Python 2.4 se recomienda usar el módulo subprocess:

http://docs.python.org/lib/module-subprocess.html

Con él se trata de unificar las (excesivas) formas que hay de ejecutar comandos 
externos (os.system, os.spawn, os.popen, popen2, coommands).  De la 
documentación puedes sacar ideas para lo que quieres hacer. Por ejemplo:

import subprocess
output = subprocess.Popen(["nslookup", "google.es"],
      stdout=subprocess.PIPE).communicate()[0]

si quisieras obtener también el código de retorno podrías hacer:

p = subprocess.Popen(["nslookup", "google.es"], stdout=subprocess.PIPE)
output, retval = p.communicate()[0], p.returncode




Más información sobre la lista de distribución Python-es