subprocess.popen, capturar stdout
Oswaldo Hernández
listas en soft-com.es
Mar Oct 30 15:51:20 CET 2007
Hola a todos,
Estoy peleandome con subprocess.popen() para capturar la salida de un proceso conforme se va
ejecutando y no lo consigo.
El proceso lo lanzo de la siguiente forma:
exe = "programa.exe parametro"
pr = subprocess.Popen(exe, stdin=None, stdout = subprocess.PIPE, stderr=subprocess.PIPE)
Para capturar la salida he probado:
retorno=None
while retorno is None:
out, error = pr.communicate()
retorno = pr.poll(50)
Esto funciona, pero communicate() espera a que termine el proceso y da toda la salida de una vez.
Tambien he probado:
retorno=None
while retorno is None:
out = pr.stdout.readlines()
error = pr.stdout.readlines()
retorno = pr.poll(50)
Ocurre lo mismo, hasta que no termina el proceso no obtengo su salida.
He probado variantes utilizando read() en vez de realines(), pero siempre lo mismo.
Al estar sobre windows no puedo utilizar select para comprobar si hay datos antes de hacer la
lectura sobre el pipe, y me da que es ahi donde esta el problema.
¿Estoy haciendo algo mal?
--
*****************************************
Oswaldo Hernández
oswaldo (@) soft-com (.) es
*****************************************
_______________________________________________
Lista de correo Python-es
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes
Más información sobre la lista de distribución Python-es