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... La pregunta es, si la forma de hacer este filtrado sin modificar la función es hacer un filtro para el sys.stdout o existe alguna otra forma de hacerlo? Por otro lado existe alguna forma estándard o por lo menos alguna "mejor práctica" para implementar este tipo de objetos? Alguna sugerencia sobre como implementar el objeto? Ahora el objeto FiltroSalida implementa el write, y el flush, pero estoy teniendo problemas con la gestión de los buffers... motivo por el que me planteaba si toda la idea era correcta o no. Cualquier sugerrencia será bienvenida Saludos -- Hasta otra!!! Eduardo Ferro Aldama Alea Soluciones http://www.alea-soluciones.com http://oss.alea-soluciones.com http://doc.alea-soluciones.com
_______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/