Capturar la salida de un programa desde un frontend

llonqui63 llonqui63 llonqui63 en linuxpower.zzn.com
Mar Mayo 6 13:25:10 CEST 2003


bueno esto no es python, digamos que uso jython para juntar
dos mundos (scripting y la API java). esta es la solucion
que yo suelo usar (me queda pendiente hacerlo todo en python
como ejercicio, como tantas cosas nunca lo terminare)

por si sirve de algo

un saludo // oki oki 





#!/usr/bin/env jython

from java.lang import *
 from java.io import *

#funcion de utilidad
def inputStreamToString( inst ):
  #hacemos nuestros chequeos
  if inst == None:
    return

  #construimos leyendo el stream
  ret = ""
  try:
    isr = InputStreamReader( inst )
    br = BufferedReader( isr )
    linea = br.readLine()
    while( linea != None ):
      ret = ret + linea + "\n"
      linea = br.readLine()

  except IOException:
    return( "" )

  #finalmente retornamos
  return ret

#principal, inicio del programa
try:
  proc = Runtime.getRuntime().exec( "/sbin/ifconfig" )

  is1 = proc.getInputStream()
  is2 = proc.getErrorStream()

  print( inputStreamToString( is1 ) )
  print( "---" )
  print( inputStreamToString( is2 ) )

except IOException:
  print( "*** problemas para ejecutar /sbin/ifconfig ***" )



---- Principio del Mensaje Original ----

De: Carles Sadurní Anguita <isard en ctv.es>
Enviado: 03 May 2003 15:38:49 +0200
Para: La lista de python en castellano <python-es en aditel.org>
Asunto: [Python-es] Capturar la salida de un programa desde un frontend


Hola:

Tengo un programa que funciona en consola (presuntamente bien). Realiza
conexiones a páginas web que aparecen en un fichero y a medida que va
conectando saca un mensaje (con un simple print).

A petición de algunos usuarios estoy haciendo un "frontend" gráfico (con
glade) desde el que se pueda configurar el programita, arrancarlo y
pararlo. Arrancar... arranca, pero me gustaría mostrar la salida del
programa en un cuadro de texto.

El problema es capturar la salida del programa. Los métodos "habituales"
me muestran la salida del programa cuando éste finaliza, pero yo
necesito la salida a medida que se produce.

Me explico, si desde el frontend llamo a "ls", si uso popen2 (por
ejemplo), se ejecuta y me muestra la salida (cuando acaba); sin embargo,
este programa puede tardar minutos, horas o días en acabar...

¿Cómo se puede capturar la salida de un programa a medida que se
produce?

¿Sería mucho pedir que el método fuese independiente del sistema? :-)

El programa se encuentra en 

http://www.puntnet.org/script.html

el frontend no porque claro, no hace nada útil todavía.

Gracias

-- 
---------------------------------------------------------------------
Carles                   |   es mentira que no tenga enemigos
                         |   es mentira que no tengan razón

PGP-public-key:            http://perso.wanadoo.es/isard.sabut/


---- Fin del Mensaje Original ----



Get your Free E-mail at http://linuxpower.zzn.com
____________________________________________________________
Para obtener su propio servicio de correo electrónico basado en la Multimalla, diríjase a http://www.zzn.com




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