[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