[Python-es] duda con subprocess.Popen

Jose Gomez-Dans jgomezdans en gmail.com
Mar Ene 25 18:13:39 CET 2011


Hola,


2011/1/25 Tony Peña <emperor.cu en gmail.com>:
> Hola estoy intentando probar el subprocess.Popen pero no entiendo bien como
> funciona pq
>
> un ejemplo hipotetico si quisiera ejecutar un comando como ls -lhR /
> yo ejecuto el comando con
>
> cmd = "ls -lhR /"
> subprocess.Popen(cmd, stdout=subprocess.PIPE, shell=True).command()[0]
>
> y se me queda colgado o bloqueado el script hasta que no termine,
> necesitaria ver com seria el ejemplo mas claro de lo que he visto en las
> webs por ahi para poder salirme del proceso child y poder continuar con el
> script valorando segun la salida de ese comando otras cuestiones...
> alguna idea?

Yo suelo utilizarlo bastante para monitorizar programas que necesitan
una configuraición a través de por ejemplo stdin

import subprocess

 p = subprocess.Popen( cmd,  stdout = subprocess.PIPE, \
            stdin=subprocess.PIPE )
p.stdin.write ( run_file )
while True:
        o = p.stdout.readline()
        if o == '' and p.poll() != None:
             break
        print o, # Imprime una línea de stdout del subproceso lanzado arriba


Supongo que en vez del print o, tendrías algo que enlaza con tu GUI.

No sé si te es útil...

Saludos
Jose


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