Si este es mi subproceso:La interceptación de la salida estándar de un subproceso mientras se está ejecutando
import time, sys
for i in range(200):
sys.stdout.write('reading %i\n'%i)
time.sleep(.02)
Y este es el guión controlar y modificar la salida del subproceso:
import subprocess, time, sys
print 'starting'
proc = subprocess.Popen(
'c:/test_apps/testcr.py',
shell=True,
stdin=subprocess.PIPE,
stdout=subprocess.PIPE )
print 'process created'
while True:
#next_line = proc.communicate()[0]
next_line = proc.stdout.readline()
if next_line == '' and proc.poll() != None:
break
sys.stdout.write(next_line)
sys.stdout.flush()
print 'done'
¿Por qué es readline
y communicate
esperando hasta que el proceso termine de ejecutarse? ¿Hay una manera simple de pasar (y modificar) el subproceso 'stdout en tiempo real?
Por cierto, he visto this, pero no necesito las características de registro (y no me he molestado en comprenderlo en gran parte).
Estoy en Windows XP.
relacionadas: [? Cómo limpiar la salida de impresión Python] (http://stackoverflow.com/q/230751/95735) –