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

Jordi Funollet jordi.f en ati.es
Mie Feb 10 18:46:06 CET 2010


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



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