[Python-es] Modulo subprocess y Script Perl

Alejandro Acosta alejandroacostaalamo en gmail.com
Lun Mayo 4 04:27:05 CEST 2015


Hola,
  A mi lo que me extraña es que no funcione ni siquiera desde el script
en bash..., tipicamente cuando esto falla es por tema de variables de
entorno, en el propio script en bash asegurate que tengas el mismo
ambiento que cuando estas logueado normalmente, con env puede verificar
esto.

Saludos,


El 5/3/2015 a las 7:16 PM, Chema Cortes escribió:
>
>
> El 3 de mayo de 2015, 22:07, Juan Camilo Hernandez Diaz
> <camilo.hernandez en gmail.com <mailto:camilo.hernandez en gmail.com>> escribió:
>
>     Gracias por tu respuesta.
>
>     Mira como estoy pasando los datos:
>
>     /cmd     =   "/opt/tools/RT_reformat.pl"/
>     /par     =   "{0}/{1}".format(os.getcwd(), fname)/
>     /cmd_exe =   subprocess.Popen([cmd, par], shell=False,
>     stdout=subprocess.PIPE, stderr=subprocess.PIPE)/
>     /stdout, stderr = cmd_exe.communicate()/
>     /print stdout, stderr/
>
>     tambien probe con:
>     cmd = /"/opt/tools/RT_reformat.pl //{0}/{1}".format(os.getcwd(),
>     fname), eliminando logicamente lo referente a la variable par-/
>
>     la variable *par* hace referencia a un archivo de texto
>     (Sensor.2015022300) plano que contiene un listado de sensores y
>     valores de temperatura, la salida del comando es un archivo en
>     texto plano con un formato especifico ¿Estoy haciendo algo mal?
>
>
> Está correcto (aunque mejor usar os.path.join para la ruta del fichero)
>
> Intuyo que hay una mala comunicación entre el script de perl y python.
> Parece como que el código python acabe antes de que el script de perl
> haya procesado todo el fichero. Precisamente, communicate debería
> esperar hasta que el subproceso acabe, pero puede que el script de
> perl se dedique a lanzar otros procesos que python no ve.
>
> Prueba a poner una espera (time.sleep()) antes de communicate a ver si
> termina bien.
>
>  
>
>
>
>
>     2015-05-03 14:31 GMT-05:00 Chema Cortes <pych3m4 en gmail.com
>     <mailto:pych3m4 en gmail.com>>:
>
>
>
>         El 3 de mayo de 2015, 18:56, Juan Camilo Hernandez Diaz
>         <camilo.hernandez en gmail.com
>         <mailto:camilo.hernandez en gmail.com>> escribió:
>
>             Un saludo a todos.
>
>             Tengo la necesidad de ejecutar un script en perl, el cual
>             es provisto por un tercero; este básicamente efectúa una
>             consulta y genera un archivo en un formato especifico.
>
>             He programado una función en python que se encarga de
>             ejecutar este archivo, y continuar la ejecución de las
>             demás tareas. Sin embargo, este no se ejecuta como es
>             debido (no genera el archivo de salida)
>
>             Hasta el momento he probado con os.system, subsystem.call
>             y subsystem.Popen, todos con el mismo resultado:
>
>
>         Entiendo que por "subsystem" te refieres a "subprocess"
>          
>
>
>             /substr outside of string at /opt/tools/RT_reformat.pl
>             line 77, <IN> line 15729/
>
>             Igualmente, trate de generar un bash script que fuera
>             llamado desde mi script python y ejecutara el modulo en
>             perl; igual resultado.
>
>             Cuando ejecuto el script directamente en bash funciona sin
>             problemas y genera los archivos requeridos ¿Alguna
>             sugerencia de como superar esto?
>
>
>
>         Por el error, parece que el script de perl no encuentra nada
>         en el stream de entrada <IN>. Cuando dices que el script
>         "efectúa una consulta", probablemente espera encontrar algo
>         que deberías suministrar. Tal vez, pida que le introduzcas un
>         dato o simplemente pulsar una tecla para continuar. Por
>         defecto, el proceso que lanza python no tiene ninguna entrada
>         de datos.
>
>         Puede que la documentación te ayude:
>         https://docs.python.org/2/library/subprocess.html#replacing-older-functions-with-the-subprocess-module
>
>
>         -- 
>         Hyperreals *R  "Quarks, bits y otras criaturas
>         infinitesimales": http://ch3m4.org/blog
>         Buscador Python Hispano: http://ch3m4.org/python-es
>
>         _______________________________________________
>         Python-es mailing list
>         Python-es en python.org <mailto:Python-es en python.org>
>         https://mail.python.org/mailman/listinfo/python-es
>         FAQ: http://python-es-faq.wikidot.com/
>
>
>
>
>     -- 
>     JUAN CAMILO HERNÁNDEZ DÍAZ
>
>
>     _______________________________________________
>     Python-es mailing list
>     Python-es en python.org <mailto:Python-es en python.org>
>     https://mail.python.org/mailman/listinfo/python-es
>     FAQ: http://python-es-faq.wikidot.com/
>
>
>
>
> -- 
> Hyperreals *R  "Quarks, bits y otras criaturas infinitesimales":
> http://ch3m4.org/blog
> Buscador Python Hispano: http://ch3m4.org/python-es
>
>
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> https://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/

------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20150503/b83d4cd6/attachment.html>


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