Страницы

Поиск по вопросам

четверг, 7 марта 2019 г.

Запуск консольной команды и получение её ответа с помощью Python 3 [дубликат]

На данный вопрос уже ответили: 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

Комментариев нет:

Отправить комментарий