[Python-es] ¿cómo ver el stdout en tiempo real?

Jose Caballero jcaballero.hep en gmail.com
Mar Oct 26 01:25:16 CEST 2010


El 25 de octubre de 2010 19:20, Ricardo Cárdenes Medina <
ricardo.cardenes en gmail.com> escribió:

>
>
> 2010/10/26 Ricardo Cárdenes Medina <ricardo.cardenes en gmail.com>
>
>
>>
>> 2010/10/26 Jose Caballero <jcaballero.hep en gmail.com>
>>
>>
>>
>>> 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)
>>>
>>>
>> Hay dos problemas aquí. Por un lado está el de la lectura, que se
>> resolvería con algo como lo que te ha comentado Arnau. Por otro lado está el
>> de la producción del texto, que *TAMBIÉN* se ve afectada por los búfers.
>>
>> Si quieres que la cosa funcione y tienes control sobre el lado que produce
>> el texto, asegúrate de volcar (flush) el búfer de stdout tras cada bloque de
>> texto que quieras enviar.
>>
>>
> Nota, en tu ejemplo anterior sería tan sencillo como:
>
> #!/usr/bin/env python
>
> import sys
> import time
> for i in range(3):
>         print time.time()
>         sys.stdout.flush()
>         time.sleep(3)
>
>
>

Muchísimas gracias.
Lo acabo de probar y parece que funciona. No conocía flush().
Ya estoy más cerca de resolver mi problema. Gracias por la ayuda.
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20101025/6ab31d85/attachment.html>


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