2010-12-10 39 views

Respuesta

34
>>> import subprocess 
>>> cmd = [ 'echo', 'arg1', 'arg2' ] 
>>> output = subprocess.Popen(cmd, stdout=subprocess.PIPE).communicate()[0] 
>>> print output 
arg1 arg2 

>>> 

hay un error en el uso de la subprocess.PIPE. Por la enorme producción de este uso:

import subprocess 
import tempfile 

with tempfile.TemporaryFile() as tempf: 
    proc = subprocess.Popen(['echo', 'a', 'b'], stdout=tempf) 
    proc.wait() 
    tempf.seek(0) 
    print tempf.read() 
+0

eres mi salvador !!! ¡He estado buscando algo como esto por días! ¡gracias! –

14

Use el subprocess module en su lugar.

pipe = Popen("pwd", shell=True, stdout=PIPE).stdout 
output = pipe.read() 

En Python 2.7, también puede usar la función check_output().

4

Puede utilizar Popen en subprocess ya que sugieren.

con os, que no se lo recomiendo, es como a continuación:

import os 
a = os.popen('pwd').readlines() 
+0

Esto no funciona. Los objetos 'Popen' no tienen el método' readlines() '. –

+0

Gracias por señalarlo, solo funciona para os.popen – gerry

+3

'os.popen' está en desuso en favor de' subprocess.Popen'. –

0

La forma más sencilla es utilizar los comandos de la biblioteca

import commands 
print commands.getstatusoutput('echo "test" | wc') 
+2

¿Dónde obtienes el módulo de comandos? No parece estar en pip para Python3. – Shule

Cuestiones relacionadas