[Python-es] Modulo subprocess y Script Perl

Chema Cortes pych3m4 en gmail.com
Lun Mayo 4 01:46:58 CEST 2015


El 3 de mayo de 2015, 22:07, Juan Camilo Hernandez Diaz <
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>:
>
>>
>>
>> El 3 de mayo de 2015, 18:56, Juan Camilo Hernandez Diaz <
>> 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
>> 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
> 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
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://mail.python.org/pipermail/python-es/attachments/20150504/308f32c4/attachment.html>


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