На этот вопрос уже есть ответ здесь:
Я хочу запустить команду в 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