[Python-es] ¿cómo ver el stdout en tiempo real?
Jose Caballero
jcaballero.hep en gmail.com
Mar Oct 26 01:09:04 CEST 2010
El 25 de octubre de 2010 18:38, Arnau Sanchez <pyarnau en gmail.com> escribió:
> On Mon, 25 Oct 2010 17:58:34 -0400 Jose Caballero wrote:
>
> > Sí, estoy intentándolo con subprocess. Capturar el output y el RC lo
> > consigo. De hecho eso ya lo tenía con popen2. Ver la salida "en directo"
> es
> > lo que me está dando más problemas...
>
> popen = subprocess.Popen(command, stdout=subprocess.PIPE)
> for line in iter(popen.stdout.readline, ""):
> print line,
>
Nope. Me imprime todo el output al final, no a medida que se va generando.
Por ejemplo, imaginemos que el command es "./cmd.py"
donde cmd.py es algo como esto (esto es un ejemplo tonto para probar)
---------------------------------------------------
#!/usr/bin/env python
import time
for i in range(3):
print time.time()
time.sleep(3)
---------------------------------------------------
Si intento ejecutarlo desde un programa main.py que es algo como esto:
---------------------------------------------------
#!/usr/bin/env python
import subprocess
popen = subprocess.Popen('./cmd.py', stdout=subprocess.PIPE)
for line in iter(popen.stdout.readline, ""):
print line,
---------------------------------------------------
Los tres valores del tiempo se muestran en una sola vez, al final, en lugar
de uno cada tres segundos, que es lo que necesito.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20101025/083172e8/attachment.html>
Más información sobre la lista de distribución Python-es