Quiero ejecutar un comando en pythong
, utilizando el módulo de subproceso, y almacenar la salida en una variable. Sin embargo, no quiero que la salida del comando se imprima en el terminal. Para que este código:Salida estándar de subproceso de tubería a una variable
def storels():
a = subprocess.Popen("ls",shell=True)
storels()
me sale el listado del directorio en el terminal, en lugar de tener que almacenar en a
. También lo intenté:
def storels():
subprocess.Popen("ls > tmp",shell=True)
a = open("./tmp")
[Rest of Code]
storels()
Esto también imprime la salida de ls en mi terminal. Incluso he intentado este comando con el método os.system algo anticuado, ya que al ejecutar ls > tmp
en el terminal no se imprime ls
en absoluto, sino que se almacena en tmp
. Sin embargo, pasa lo mismo.
Editar:
me sale el siguiente error después de seguir el consejo de marcog, pero sólo cuando se ejecuta un comando más complejo. cdrecord --help
. Python escupe esto:
Traceback (most recent call last):
File "./install.py", line 52, in <module>
burntrack2("hi")
File "./install.py", line 46, in burntrack2
a = subprocess.Popen("cdrecord --help",stdout = subprocess.PIPE)
File "/usr/lib/python2.6/subprocess.py", line 633, in __init__
errread, errwrite)
File "/usr/lib/python2.6/subprocess.py", line 1139, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory
Solo una nota, usando 'shell = true' se desaconseja en los documentos de Python. http://docs.python.org/2/library/subprocess.html#frequently-used-arguments – SamHuckaby