[Python-es] Subprocess imprimir salida en pantalla en un archivo

Javier Collado javier.collado en gmail.com
Mie Feb 10 19:15:20 CET 2010


Hola,

La función oneliner tiene buena pinta. Sólo un comentario: hay que
tener cuidado cuando se pasen comandos con argumentos entrecomillados
que contengan espacios porque entonces cmd.split() no los separa bien.

Un saludo,
    Javier

El día 10 de febrero de 2010 18:46, Jordi Funollet <jordi.f en ati.es> escribió:
> On Wednesday 10 February 2010 17:57:13 Gabriel Rech wrote:
>> Hola a todos!
>> Estoy corriendo desde Python, un programa que se corre normalmente desde
>> terminal de linux.
>> Para esto estoy usando el modulo subprocess. Basicamente lo que tengo es
>> esto...
>>
>> subprocess.call(process, shell = True)
>>
>> Esto funciona bien. Ahora, el asunto es que me gustaría que mi script
>> guardara la salida que el programa produce y muestra en pantalla, en un
>> archivo.
>> Es posible esto?
>>
>> Desde ya, muchas gracias
>>
>> Gabriel
>>
> Yo uso esta funcioón para llamar a subprocess:
>
> -------------------------------------------------------
> def oneliner(cmd, stdin=None):
>    """Execs the string in a shell. Returns cmd output.
>
>    @cmd:       string with the command to be executed
>    @stdin:     (optional) string writen to the command's standard input
>    """
>    pipe = subprocess.Popen(cmd.split(), stdin=subprocess.PIPE,
>        stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
>    ret = pipe.communicate(stdin)
>
>    if pipe.returncode == 0:
>        return ret[0]
>    else:
>        return None
> -------------------------------------------------------
>
> Por ejemplo,
>
>   host = oneliner("hostname -f")
>
> Ahora todo se reduce a salvar la variable 'host' en un fichero de texto; no
> debería darte muchos problemas.
>
> --
> ##############################
> ### Jordi Funollet
> ### http://www.terraquis.net
> _______________________________________________
> Python-es mailing list
> Python-es en python.org
> http://mail.python.org/mailman/listinfo/python-es
> FAQ: http://python-es-faq.wikidot.com/
>



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