[Python-es] Cómo filtrar/procesar la salida a consola de una función, sin modificar la función

Eduardo Ferro eferro en alea-soluciones.com
Lun Feb 22 11:31:55 CET 2010


Buenas...

2010/2/21 Daniel Garcia Moreno <dani en danigm.net>

> El dom, 21-02-2010 a las 22:39 +0100, Eduardo Ferro escribió:
> > Buenas.
> >
> > Necesito poder filtrar la salida por consola de una función a la que
> > llamo, sin que esta función se vea alterada. Es para una especie de
> > interprete de comandos, que puede tener en un momento dado activados
> > filtros  o no, o tener activado un pager o no.
> > Para que se me entienda bien, si tengo la siguiente función:
> >
> > def func1():
> >     for num in range(100):
> >         print num
> >
> > Cuando ejecute la función saldrian las 100 lineas numeradas, pero si
> > la llamo y tengo configurado un paginador, quisiera que se parase cada
> > 25 lineas y esperase una tecla, o si tengo puesto un filtro para que
> > salgan las lineas que contengan un "1", sólo quiero que salgan esas
> > lineas....
> >
> > Ahora mismo lo tengo hecho con un objeto que simula ser un fichero de
> > salida y que hace las funciones de filtro, y lo que hago es cambiar el
> > sys.stdout por ese objeto, antes de realizar la llamada, y restaurarlo
> > una vez completada la llamada. Algo similar a:
> >
> > inicial = sys.stdout
> > sys.stdout = FiltroSalida()
> > func1()
> > sys.stdout = inicial
> >
> > El caso es que estoy teniendo algunos problemas con la implementación
> > de  la clase FiltroSalida y en algunos casos creo que pierdo algo de
> > la salida...
>
> También tienes que tener en cuenta la salida de error, sys.stderr. Lo
> mismo lo que se te escapa es eso.
>

Creo que no estaba teniendo en cuenta el sys.stderr, y quizás me este
generando salida que se esté mezclando con la que proceso.
Gracias por la sugerencia, le echaré un ojo a ese tema

saludos

-- 
Hasta otra!!!
   Eduardo Ferro Aldama
   Alea Soluciones

   http://www.alea-soluciones.com
   http://oss.alea-soluciones.com
   http://doc.alea-soluciones.com
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20100222/cf481bfa/attachment.html>


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