• Viernes 29 de Marzo de 2024, 05:55

Autor Tema:  Ejecutar Subprocesos En Python  (Leído 4166 veces)

joy

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Ejecutar Subprocesos En Python
« en: Lunes 6 de Noviembre de 2006, 20:10 »
0
os explico un poco lo que quiero hacer:

pretendo ejecutar un programa lematizador de texto desde una funcion en python. es decir tengo en windows el programa llamado Freeling-1.4 y para que lematice el texto hay que hacerlo asi:

'C:/FreeLing-1.4/analyzer -f C:/FreeLing -1.4/data/config/es.cfg<' + texto

por lo que ejecuto el programa como si de un subproceso se tratase y recojo los resultados en tres ficheros.
yo realmente necesito imprimir el fichero po(el de output) en pantalla, mas que nada para ver los datos formato... por eso me he hecho esta otra funcion:

Código: Text
  1. import sys, popen2
  2.  
  3. def lematizar(texto)
  4.     command='C:/FreeLing-1.4/analyzer -f C:/FreeLing -1.4/data/config/es.cfg&#60;'+texto
  5.     po,pi,pe=popen2.popen3(command)
  6.     print po.readlines()
  7.  

y el resultado no es el que realmente esperaba, me devuelve como si el fichero creado estuviera vacio exactamente esto: [] sabeis que estoy haciendo mal????? Tambien he probado a abrir el fichero leer y luego cerrarlo y el resultado es el mismo.

muchas gracias

JOANA

* por favor no uses tanto las mayusculas, parece como si estuvieras gritando.
** cuando ingresas codigo por favor utiliza bien la indentacion, en python es muy importante.
*** no ingreses un mismo thead mas de una vez. http://foros.solocodigo.com/index.php?showtopic=25157

NRM

  • Miembro MUY activo
  • ***
  • Mensajes: 279
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.narrowmind.com.ar
Re: Ejecutar Subprocesos En Python
« Respuesta #1 en: Martes 7 de Noviembre de 2006, 03:13 »
0
No intentaste hacer lo que te explique en el otro thread? No te funciono?

http://foros.solocodigo.com/index.php?showtopic=25157

Si no funciona, explicanos un poco mas. O muestranos los errores, si los hay.
Podrias mostrarnos una salida del programa ejecutandose normalmente, o podrias mostranos todo el programa y no solo la funcion?

Saludos

NRM

joy

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: Ejecutar Subprocesos En Python
« Respuesta #2 en: Martes 7 de Noviembre de 2006, 09:38 »
0
no es una funcion que llame desde ningun otro programa soo quiero probar el programa de lematizar y el error es que me devuelve un fichero vacio: osea esto[] cuando deberia contener el texto lematizado.
Cuando tengo la funcion guardada la llamo de la siguiente manera y este es el resultado:

Código: Text
  1.  
  2. &#62;&#62;&#62;lematizar('mi gato')
  3. []
  4.  
  5.  


P:D:perdon por lo de las mayusculas mi intencion no era gritar.

NRM

  • Miembro MUY activo
  • ***
  • Mensajes: 279
  • Nacionalidad: ar
    • Ver Perfil
    • http://www.narrowmind.com.ar
Re: Ejecutar Subprocesos En Python
« Respuesta #3 en: Miércoles 8 de Noviembre de 2006, 02:31 »
0
intenta con el siguiente codigo y si este no funciona deberia tirar un error, de ser asi publica el error.

Código: Text
  1. import sys, os
  2.  
  3. def lematizar(texto):
  4.    command = &#34;C:&#092;&#092;FreeLing-1.4&#092;&#092;analyzer -f C:&#092;&#092;FreeLing-1.4&#092;&#092;data&#092;&#092;config&#092;&#092;es.cfg &#60; &#34; + texto
  5.    pi, po = os.popen2(command)
  6.    print po.readlines()
  7.  

saludos

NRM

joy

  • Nuevo Miembro
  • *
  • Mensajes: 14
    • Ver Perfil
Re: Ejecutar Subprocesos En Python
« Respuesta #4 en: Miércoles 8 de Noviembre de 2006, 10:09 »
0
Sigue igual, me sigue dando el fichero como si estuviera vacio y no da ningun otro tipo de error. Con la funcion que yo he hecho al recoger el resultado de popen2.popen3 en tres fichero imprimo el de error(pe) y no funciona porque da el siguiente error
Código: Text
  1.  
  2. ['El nombre de archivo, directorio o etiqueta del volumen no es v/xaolido./n']
  3.  
  4.  

he probado con todo, pasarle la direccion del archivo entera es decir el path entero

lematizarTexto(C:/Python23/prueba.txt

pero no consigo arreglar el error.