Я хочу запустить команду в 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
. Однако происходит то же самое.
Edit:
Я получаю следующую ошибку после следующих рекомендаций marcog, но только при запуске более сложной команды. cdrecord --help
. Python выплевывает это:
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