Ejecutar programa externo
Marcos Sánchez Provencio
rapto en arrakis.es
Vie Sep 26 09:57:04 CEST 2003
Hola, Gema.
Creo que cada llamada a readlines() intenta agotar el flujo de datos,
bloqueando. Habría que leer poco a poco (línea a línea, carácter a
carácter o muestreando si hay algo disponible), dejando que el flujo de
ejecución del programa siga.
Chao
El jue, 25-09-2003 a las 12:54, Gema Núñez Blázquez escribió:
> Hola lista, vereis tengo una duda. Quiero ejecutar un programa externo
> a traves de python y para eso uso popen3 que me da 3 salidas:
> salida,entrada y error.
>
> El problema es que no puede acceder a estos buffers hasta que no
> retorna de la ejecucion del programa externo. Lo que yo quiero es
> poder ir obteniendo la salida a la vez que el programa las va sacando
> para poder seguir el progreso.
>
> Os mando el trozo de codigo donde iria integrado por si os sirve de
> referencia.
>
> Muchas gracias por vuestra ayuda
>
> def comandoEjecutarConEspera(app,lineaComando):
> retorno=1
> ruta=os.getcwd()+'>'
> #lo malo de popen es que hasta que no retorna no me da el
> resultado
> s1,s2,s3=os.popen3(lineaComando)#Todo lo que saca el programa a
> ejecutar lo obtengo por la salida s2
> #s1=>entrada s2=>salida s3=>error
> app.fichLog.escribirEnLog(ruta+lineaComando)
> app.frmLog.escribirEnTxt(ruta,lineaComando)
> try:
> salida=''
> datos=s2.readlines()
> if len(datos)>0:
> for x in datos:
> salida=salida+' '+upper(x)
> app.fichLog.escribirEnLog(' SALIDA EJECUTAR:'+salida)
> app.frmLog.escribirEnTxt('','',salida)
> s2.close()
> except Exception: #no hay salida
> pass
> try:
> errores=''
> print 'len datos => '+len(datos)
> datos=s3.readlines()
> if len(datos)>0:
> for x in datos:
> errores=errores+' '+upper(x)
> app.fichLog.escribirEnLog(' ERRORES EJECUTAR:'+errores)
> app.frmLog.escribirEnTxt('','',errores)
> retorno=-1
> s3.close()
> except Exception: #no hay errores
> #no hay errores
> pass
> return retorno
>
>
>
> ______________________________________________________________________
> Yahoo! Messenger
> Nueva versión: Super Webcam, voz, caritas animadas, y más ¡Gratis!
>
> ______________________________________________________________________
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es
--
Marcos Sánchez Provencio <rapto en arrakis.es>
------------ 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