Si solo desea ejecutar el ejecutable y esperar los resultados, la solución de Anurag es probablemente la mejor. Necesitaba responder a cada línea de salida cuando llegó y encontré que funcionaba lo siguiente:
1) Cree un objeto con un método de escritura (texto). Redirigir stdout a él (sys.stdout = obj). En su método de escritura, trate el resultado a medida que llega.
2) Ejecutar un método en un hilo separado con algo así como el código siguiente:
p = subprocess.Popen('Text/to/execute with-arg', stdout=subprocess.PIPE,
stderr=subprocess.PIPE, shell=False)
while p.poll() is None:
print p.stdout.readline().strip()
Debido a que usted ha redireccionado la salida estándar, tubería se enviar la salida a la línea método de escritura por línea. Si no está seguro de que va a tener saltos de línea, también creo que leer (cantidad) funciona.
3) Recuerde para redirigir la salida estándar a la configuración predeterminada: sys.stdout = __sys.stdout__
cómo usar ese subproceso? – Kim
Consulte http://docs.python.org/library/subprocess.html#replacing-os-system. –
Vale la pena recordar que el símbolo de la tubería difiere entre los sistemas operativos cuando se intenta utilizar el sistema os.system para redirigir las cosas ... – mavnn