На данный вопрос уже ответили: Python 3 и командная строка 1 ответ Как можно написать программу на Python 3 для линукса, чтобы она вбивала в терминал команду и считывала ответ?
Ответ
Для этого можно использовать функцию check_output из модуля
subprocess
subprocess.check_output('ls file; exit 0', shell=True)
Здесь shell=True нужно использовать, если вся команда идёт в виде одной строки,
а ; exit 0 добавлено для того, чтобы не бросалось исключение в случае, если команда вернёт не нулевой код.
Можно контролировать код возврата, используя блок try-except, отлавливая ошибки запущенных команд:
try:
subprocess.check_output('ls file', shell=True)
except subprocess.CalledProcessError as e:
print('Команда
> {}
завершилась с кодом {}'.format(e.cmd, e.returncode))
Если нужно учитывать и поток stderr, то документацией предлается следующий способ:
subprocess.check_output("ls file; exit 0", stderr=subprocess.STDOUT, shell=True)
Здесь мы явно получаем нулевой код возврата, подавляя поднятие исключения, а также перенаправляем поток stderr на stdout
Комментариев нет:
Отправить комментарий