Python: captura la salida de subprocess.call con stdout

Así que estoy intentando guardar la salida de mi subprocess.call pero sigo recibiendo el siguiente error: AttributeError: 'int' object has no attribute 'communicate'

El código es el siguiente:

 p2 = subprocess.call(['./test.out', 'new_file.mfj', 'delete1.out'], stdout = PIPE) output = p2.communicate[0] 

Estás buscando subprocess.Popen() lugar de call() .

También debe cambiarlo a p2.communicate()[0] .

Eso es porque subprocess.call devuelve un int:

 subprocess.call(args, *, stdin=None, stdout=None, stderr=None, shell=False) Run the command described by args. Wait for command to complete, then return the returncode attribute. 

Parece que quieres subprocess.Popen ().

Aquí hay una pieza típica de código que tengo que hacer esto:

 p = Popen(cmd, stdout=PIPE, stderr=PIPE, bufsize=256*1024*1024) output, errors = p.communicate() if p.returncode: raise Exception(errors) else: # Print stdout from cmd call print output 

Debes usar subproceso

  try: subprocess.check_output(['./test.out', 'new_file.mfj', 'delete1.out'], shell=True, stderr=subprocess.STDOUT) except subprocess.CalledProcessError as exception: print exception.output