Передать стандартный вывод подпроцесса в переменную [дубликат]

На этот вопрос уже есть ответ здесь:

Я хочу запустить команду в pythong , используя модуль подпроцесса, и сохраните вывод в переменной. Однако я не хочу, чтобы вывод команды выводился на терминал. Для этого кода:

def storels():
   a = subprocess.Popen("ls",shell=True)
storels()

Я получаю список каталогов в терминале, а не храню его в a . Я также пробовал:

 def storels():
       subprocess.Popen("ls > tmp",shell=True)
       a = open("./tmp")
       [Rest of Code]
 storels()

Это также выводит вывод ls на мой терминал. Я даже пробовал эту команду с несколько устаревшим методом os.system, поскольку запуск ls> tmp в терминале вообще не выводит ls на терминал, а сохраняет его в tmp . Однако происходит то же самое.

Изменить:

Я получаю следующую ошибку после того, как следую совету marcog, но только при выполнении более сложной команды. cdrecord --help . Python выплевывает следующее:

Traceback (most recent call last):
  File "./install.py", line 52, in 
    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
88
задан George Stocker 5 July 2012 в 15:44
поделиться