[Python-es] duda con subprocess.Popen

Tony Peña emperor.cu en gmail.com
Sab Ene 29 01:59:23 CET 2011


realmente no es un ls para un fichero y otro proceso listando lo del ls es
un ejemplo que puse .. yo digo un proceso con cualquier cosa ue lance un
proceso super largo y que este tirando una salida para irla analizando..
puede ser ls puede ser una copia puede ser cualquier evento ..

El 28 de enero de 2011 15:03, Andrey Antoukh <andsux en gmail.com> escribió:

> 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.cu en 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.porrua en 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 en python.org
> >> http://mail.python.org/mailman/listinfo/python-es
> >> FAQ: http://python-es-faq.wikidot.com/
> >
> >
> > _______________________________________________
> > Python-es mailing list
> > Python-es en 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 en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20110128/079eda9b/attachment.html>


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