No se si me equivoco pero me pregunto si lo que se pretende es analizar la salida de ls -lloquesea mientras lo va listando... pues no seria mejor crear una funcion que use os.walk y retorne un generator... que poco a poco ira devolviendo fichero a fichero, creo que consigues el mismo efecto sin tener que complicarse tanto...
Disculpen si me entrometo, y haya dicho algo que no tenga que ver. Un saludo. El día 28 de enero de 2011 14:24, Tony Peña <emperor...@gmail.com> escribió: > ok vale intentare entonces por ahi que es donde mas corto sera el viaje > entonces cualquier cosa les comento > > un abrazo > > El 28 de enero de 2011 05:14, tny <a.por...@gmail.com> escribió: >> >> Además de threads y process también hay programación asíncrona. >> >> Si lo vas a hacer con el comando, yo creo que lo mejor es usar >> io_add_watch como ya te han recomendado: >> www.pygtk.org/pygtk2tutorial/sec-MonitoringIO.html >> De este modo el propio gestor de eventos de pygtk se encarga de llamar a >> tu función cada vez que haya datos que leer en stdout >> >> No necesitas más que definir la función, crear el subproceso, y asignar >> dicha función como callback del stdout del subproceso, y el gtk.main() >> se encarga de todo. >> >> >> Por si no andas fino con el inglés te lo traduzco-resumo >> >> source_id = gobject.io_add_watch(source, condition, callback) >> >> source es el fileno del stdout subprocess >> condition es gobject.IO_IN (porque quieres leer) >> callback es la función que se encargará de leer cuando haya datos que >> leer >> >> la función callback sera del estido de >> def input_callback(source, condition): >> >> donde source es el fileno del stdout del subprocess >> y a condition puedes ignorarle, pues en tu caso siempre sera IO_IN >> OJO debes devolver True para que callback sea llamado la próxima vez que >> lleguen datos a stdout. >> Y no hace falta andar con seeks ni nada, puesto que stdout es un pipe, >> una vez que lees los datos desaparecen. >> >> >> El jue, 27-01-2011 a las 10:13 -0500, Tony Peña escribió: >> > vale, ya andaba por thread a ver si me resultaba pero estube pensando >> > tambien otra opcion que quizas sea otra via es que: >> > >> > podria abrir el fichero antes de ejecutar el proceso y ponerle un >> > seek(0) >> > como posicion inicial, ejecutar con el thread el proceso, y mientras >> > esta >> > escribiendo el seek comience a ir parseando >> > y hacer un recorrido hasta donde se vaya creando mientras se parsea >> > como >> > 2das cosas que debe hacer, y luego seguir recorriendo el fichero >> > con el mismo seek >> > eso podria resolver tambien? >> > >> > vaya es algo tan sencillo como cualquiera que manda a hacer algo en >> > bash y >> > le mande la salida a un log y por otro lado este el tail -f mirando el >> > log >> > que se ve como avanza cuando sucede algo y sino se queda esperando >> > hasta que >> > le pasen el Ctrl C entiendes? >> > >> > bueno eso mismo pero en python >> > >> > saludos >> >> _______________________________________________ >> Python-es mailing list >> Python-es@python.org >> http://mail.python.org/mailman/listinfo/python-es >> FAQ: http://python-es-faq.wikidot.com/ > > > _______________________________________________ > Python-es mailing list > Python-es@python.org > http://mail.python.org/mailman/listinfo/python-es > FAQ: http://python-es-faq.wikidot.com/ > > -- http://twitter.com/andsux http://www.niwi.be **** http://www.freebsd.org/ http://www.postgresql.org/ http://www.python.org/ http://www.djangoproject.com/ "Linux is for people who hate Windows, BSD is for people who love UNIX" "Social Engineer -> Because there is no patch for human stupidity" _______________________________________________ Python-es mailing list Python-es@python.org http://mail.python.org/mailman/listinfo/python-es FAQ: http://python-es-faq.wikidot.com/