escribiendo la salida del terminal al archivo

En mi máquina, tengo algún software que toma comandos en el terminal y devuelve una lista de valores.

Para ejecutarlo, tengo que escribir algo como:

pdv -t filename 

Estoy tratando de ejecutarlo como parte de un progtwig de python. Cuando corro lo siguiente:

 os.system('pdv -t %s' % (epoch_name)) 

luego obtengo los valores que deseo que se devuelvan a mi terminal (donde epoch_name es el nombre de la variable para el nombre de archivo). Pero cuando bash escribir el resultado en un archivo:

 os.system('pdv -t %s % "(epoch_name)" > 123.txt') 

El archivo 123.txt se produce pero está vacío.

Sé que estoy extraviando los caracteres “y / o”, pero no puedo averiguar a dónde deben ir.

Cualquier ayuda sería recibida con gratitud!

Creo que esto hace lo que quieres. El argumento de os.system() debe ser una cadena que represente un comando para el sistema operativo.

 os.system('pdv -t %s > 123.txt' % epoch_name) 

Hay un módulo de subprocess , que vale la pena analizar si planea seguir procesando la salida en Python.

Puede usar subprocess.call, con el argumento de la palabra clave stdout:

 import subprocess cmd = ['ls', '-l'] with open('output.txt', 'w') as out: return_code = subprocess.call(cmd, stdout=out) 

Es mejor usar módulo de subproceso que os.system

 import subprocess subprocess.call(['pdv', '-t', filename, '>', dest_file_name]) 
 from subprocess import Popen proc = Popen(['pdv', '-t', epoch_name], stdout = open('123.txt', 'w')) 

Ver si el script comando está disponible para usted. Podría hacer lo que necesites.

O puede usar sys.stdout consulte este documento de DiveIntoPython o la discusión aquí si le ayuda.

 import sys print 'Dive in' saveout = sys.stdout fsock = open('out.log', 'w') sys.stdout = fsock print 'This message will be logged instead of displayed' sys.stdout = saveout fsock.close()