2012-02-19 9 views
11

Estoy llamando a un script de python (B) desde otro script de python (A).¿Cómo redirecciono stdout a un archivo cuando uso subprocess.call en python?

Usando subprocess.call, ¿cómo redirijo la stdout de B a un archivo que especifique?

Estoy usando python 2.6.1.

+1

¿Por qué utiliza ' subprocess.call() 'para ejecutar otro script de Python? ¿No sería mejor "importarlo" y llamar a las funciones apropiadas? – Johnsyweb

+0

El script B es un script contenedor que está llamando a A al que quiero enviar una lista de argumentos por los que estoy iterando. – Frez

Respuesta

32

pasar un archivo como el parámetro para stdoutsubprocess.call:

with open('out-file.txt', 'w') as f: 
    subprocess.call(['program'], stdout=f) 
+0

Gracias icktoofay! – Frez

+1

... y esto me recordó que también puedo poner 'stderr = f'. – sage

+0

esto no muestra registros en vivo en la pantalla –

1

enfoque alternativo

import subprocess 
p=subprocess.Popen('lsblk -l|tee a.txt',stdout=subprocess.PIPE,shell=True) 
(output,err)=p.communicate() 
p_status=p.wait() 
print output 

Por encima de código va a escribir la salida del comando para presentar a.txt

Cuestiones relacionadas