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

Arnau Sanchez pyarnau en gmail.com
Mie Feb 10 22:12:57 CET 2010


On 10/02/10 21:50, Gabriel Rech wrote:

> salida = open("output.txt", "w")
> cline = "cmd" #son muchos así que por eso los asigno a una variable
> child = subprocess.Popen(str(cline), shell=True, stdout=subprocess.PIPE)
> resultado = child.stdout.read()
> print >>salida, resultado

Se me ocurren algunos comentarios:

- Al final deberías hacer un child.wait() o vas a dejar el proceso 'zombie'. Las 
soluciones que te hemos planteado usan communicate() -entre otras cosas- para 
que no tengas que preocuparte de esos detalles.

- Veo que mi apunte de no lanzar una shell cuando no es imprescindible ha caído 
en saco roto :-)

- ¿Cierras el fichero? Mírate el operador "with", te puede ser útil:

http://effbot.org/zone/python-with-statement.htm

- No sé si "print >> ..." es pythonico o no, pero personalmente verlo me produce 
algo parecido al dolor físico ;-)

arnau

p.d.: > lanzas una shell (que se agencia su buen pedazito de memoria) cuando

Los guardianes de la ortografía me sabrán perdonar esa "z"...

-- 
Desarrollador freelance
http://www.arnau-sanchez.com



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