Uso de popen() en Windows

Gerardo Juarez gerardo en computo-industrial.com.mx
Vie Jul 7 18:05:58 CEST 2006


Hola,

Tengo un problema usando popen() bajo Windows. Estoy corriendo plink, que
es parte de los programas del paquete SSH-putty y es solamente un programa
para iniciar una sesion de SSH en un archivo batch. Lo estoy arrancando
desde Python, y la salida que me arroja en una terminal es esta:

Using username "gerardo".
Last login: Fri Jul 07 2206 10:44:35 -0500 from 220.128.35.20
You have mail.
???gerardo en hostnname.dom.mc: /home/gerardo[gerardo en hostname gerardo]$_

(Los '?' son unos caracteres de escape de la terminal)

Ahora, yo ejecuto el proceso via popen() dentro de un thread y trato de 
leer la salida. Algo asi como esto:

feed = os.popen(cmd)
while 1:
    linea = feed.readline()
    print linea

El caso es que no puedo localizar la ultima (cuarta) linea porque no la
recibo. Recibo las tres primeras y hasta alli. La ultima linea que recibo
via terminal, por cierto no tiene un \n al final (\r\n en windows), lo
cual me hace pensar que el problema va por alli, pero

(1) he intentado con c = feed.read(1) [leyendo caracter por caracter]
    sin esperar recibir \r\n y el resultado es el mismo.

(2) a veces ni siquiera llego a esa linea y puede bloquearse la aplicacion
    en Last login: o un punto intermedio.

Dice la referencia de Python que popen() era poco confiable antes de la 
version 2.0, debido a que usaba una funcion defectuosa _popen() de 
Windows, pero que fue reescrita. Estoy usando Python 2.2.2.

Como controlan ustedes la salida de programas de Windows desde Python en 
forma confiable? Donde creen que pueda estar el problema?

saludos
Gerardo  

------------ 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