Re: [Python-es] GtkTextView + popen2 -> Enviar salida de la ejecución de un comando a un TextView.
Arnau Sanchez
arnau en ehas.org
Jue Oct 25 09:56:01 CEST 2007
bameda escribió:
> Estoy haciendo una interfaz GTK para una determinado COMANDO de
> terminal en linux.
> Para recibir su salida lo hago de la siguiente manera:
>
> pipes = os.popen2(COMANDO + " \"" + filename + "\"")
A riesgo de hacerme pesado, repito lo de siempre: usa subprocess (bueno,
bonito, barato):
http://docs.python.org/lib/module-subprocess.html
> text = ""
> for line in pipes[1].readlines():
> text = text + line
Ese bucle no es idiomático.
http://jaynes.colorado.edu/PythonIdioms.html
Textualmente sería:
text = "".join(line for line in pipes[1].readlines()]
Aunque así no puedes leer de una pipe, la bloqueas seguro. Para empezar,
probaría leyendo sólo una línea (siempre que sepas que hay datos a leer)
> El problema surge cuando el comando en cuestión se queda dentro de un
> bucle en su ejecución y, evidentemente, no me muestra nada por
> pantalla.
> ¿Hay alguna forma de mandar la salida directamente al TextView sin
> esperar a que el comando termine su ejecución?
Usa subprocess en combinación con gobject.io_add_watch. Ver tutorial:
http://www.pygtk.org/pygtk2tutorial-es/sec-MonitoringIO.html
Si tienes problemas, buscando en google por esas palabras claves
encontrarás muchos programas que lo hacen, por ejemplo:
http://www.zeroflux.org/proj/pyburn/pyburn
arnau
pd: el subject es un poquito largo, sería mejor algo más sintético para
que se vea mejor en los archivos...
------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es
Más información sobre la lista de distribución Python-es