SoloCodigo

Programación Web y Scripting => Python => Mensaje iniciado por: joy en Jueves 2 de Noviembre de 2006, 11:48

Título: Problema Con Una Funcion
Publicado por: joy en Jueves 2 de Noviembre de 2006, 11:48
Hola a todos :

Tengo un problema con esta funcion.


def lematizarTexto(texto):

'''Pre: texto contiene la ruta del archivo que contiene un texto no vacío

Post: se ejecutará FreeLing, obteniendo la lista de lexemas junto con

las palabras originales y sus etiquetas.

duele doler VMIP3S0

Se devolverá la salida de FreeLing'''

#Free es una variable de usuario. contiene la ruta donde esta el Freeling

command='%Free%/analyzer.exe -f %Free%/data/config/es.cfg <'+ texto

(po,pi)= popen2(command)

return po


Lo que necesito es ejecutar un ejecutable de windows desde python. y la salida de este programa por lo que yo entiendo me da un fichero que no se porque no lo puedo leer;pone esto :

Hago la llamada:
lematizarTexto('mi gato')

<open file '%Free%analyzer.exe-f %Free%/data/config/es.cfg<mi gato', mode 'r'  at 0x00b54a20>

como puedo leer y sacar por pantalla lo que contiene el fichero, lo he probado todo Read(), hacer un bucle . . . no puedo.
Título: Re: Problema Con Una Funcion
Publicado por: RadicalEd en Jueves 2 de Noviembre de 2006, 14:07
Mira un código pequeño para leer un fichero, aunque no entiendo lo que hacer con tu función.
Código: Text
  1. archi = open('la dirección del fichero&#092;tufile.ext', 'r') #Se abre en modo lectura
  2. print f.read()
  3. f.close()
  4.  
  5.  
Con esto te debe mostrar toda la info del fichero.

Ojala te sirva.
Chao
Título: Re: Problema Con Una Funcion
Publicado por: joy en Jueves 2 de Noviembre de 2006, 22:57
CREO QUE NO ME HE EXPLICADO BIEN :

LO QUE PRETENDO HACER ES EJECUTAR UN PROGRAMA QUE TENGO EN WINDOWS DESDE LA IDLE DE PYTHON. Y PODER RECOGER EL RESULTADO DEL PROGRAMA PARA PODER MANIPULARLO O POR LO MENOS IMPRIMIRLO EN PANTALLA.

SI ME PODEIS AYUDAR OS LO AGRADECERIA ESTOY BASTANTE ESTANCADA.

MERCI
Título: Re: Problema Con Una Funcion
Publicado por: NRM en Viernes 3 de Noviembre de 2006, 13:45
Cuando ingreses codigo utiliza el tag CODE asi es mas simple la lectura.
Código: Text
  1. def lematizarTexto(texto):
  2.     '''Pre: texto contiene la ruta del archivo que contiene un texto no vacío
  3.     Post: se ejecutará FreeLing, obteniendo la lista de lexemas junto con
  4.     las palabras originales y sus etiquetas.
  5.     duele doler VMIP3S0
  6.     Se devolverá la salida de FreeLing'''
  7.  
  8.     #Free es una variable de usuario. contiene la ruta donde esta el Freeling
  9.     command='%Free%/analyzer.exe -f %Free%/data/config/es.cfg &#60;'+ texto
  10.     (po,pi)= popen2(command)
  11.     return po
  12.  

Ejemplo
Código: Text
  1. import os
  2. def listDir(directorio):
  3.     command='ls -l ' + directorio
  4.     pi, po = os.popen2(command)
  5.     return po.read()
  6.  

Nota que utilizo el os.popen2 en vez de simplemente popen2.