puedo redirigir éxito mi salida a un archivo, sin embargo, esto parece sobrescribir los datos existentes en el archivo:anexar subproceso.Popen output to file?
import subprocess
outfile = open('test','w') #same with "w" or "a" as opening mode
outfile.write('Hello')
subprocess.Popen('ls',stdout=outfile)
eliminará la línea 'Hello'
del archivo.
Supongo que una solución es almacenar el resultado en otro lugar como una cadena o algo así (no será demasiado largo), y anexarlo manualmente con outfile.write(thestring)
- pero me preguntaba si me falta algo dentro del módulo que facilita esta.
Nota sobre el post anterior: después de algunos ensayos, parece que 'subprocess.Popen' necesita algo así como un archivo para sus argumentos' stdout' y 'stderr', por lo que darles un objeto personalizado con solo un método' write' no es suficiente. Lo intenté, pero se requiere una función 'fileno', y no soy lo suficientemente bueno para emular esto en una clase propia. –
He estado intentando utilizar este método, pero he descubierto que por alguna razón, cada vez que ejecuto el proceso externo con un archivo que definitivamente he abierto para anexar, el resultado del proceso escribe desde el principio del archivo y sobrescribe cualquier información allí. Entonces, para usar esta solución, uno debe llamar a log.seek (0, os.SEEK_END) inmediatamente después de abrir el archivo. – Luke