[Python-es] Cómo filtrar/procesar la salida a consola de una función, sin modificar la función
Daniel Garcia Moreno
dani en danigm.net
Dom Feb 21 23:20:26 CET 2010
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.
------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: Esta parte del mensaje está firmada digitalmente
URL: <http://mail.python.org/pipermail/python-es/attachments/20100221/da83f0b5/attachment.pgp>
Más información sobre la lista de distribución Python-es