Uso de popen() en Windows

aNgel rEsendiz g. sonajadiabolica en gmail.com
Vie Jul 7 19:07:50 CEST 2006


No lo he hecho en windows, pero has probado:

tmp= os.popen(cmd)
feed=tmp.readlines()
for i in feed:
    print i

    Así todo pasaría a la variable feed, pero si aún así no recibes
todo, tal vez deberías probar con popen3, no se bien si en windows
también se manejan la salida estándar y la salida de error por
separado, si es así, probablemente este enviando la ultima linea a una
salida distinta de la estándar.

    Disculpa, pero no conozco mucho de windows, y tal vez esto no te
resuelva el problema, pero al menos espero haberte dado alguna idea.

    Saludos

On 7/7/06, Gerardo Juarez <gerardo en computo-industrial.com.mx> wrote:
>
> 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
>
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
>
>
>


-- 
aNgel rEsendiz.!




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