Uso de popen() en Windows

Arnau Sanchez arnau en ehas.org
Vie Jul 7 22:27:28 CEST 2006


Prueba con:

feed = os.popen(cmd)
while 1:
	data = os.read(feed.fileno(), 256)
	if not data: break
	sys.stdout.write(data)
	sys.stdout.flush()

No tengo ni idea de cómo funcionará en Windows, pero en Linux usar os.read en 
vez de object.read suele ser mano de santo.

Claro que con un os.read no obtendrás lineas, pero se puede arreglar fácilmente, 
pero primero mira si funciona así...

Gerardo Juarez escribió:
> 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




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