Python 3.5+subprocessфункция
subprocess.run()
запуск процессов
Запускает команду, ждёт завершения и возвращает CompletedProcess. Основной способ вызова внешних программ в Python 3.5+.
Синтаксис
subprocess.run(args, *, capture_output=False, text=False, check=False, timeout=None, ...)
По умолчанию check=False, поэтому упавшая команда выглядит как успешный вызов — проверяйте result.returncode или ставьте check=True, иначе ошибка пройдёт незамеченной. Без capture_output=True вывод идёт напрямую в консоль, а result.stdout остаётся None. Аргументы передавайте списком: строка вместе с shell=True превращает любой пользовательский ввод в дыру для инъекции команд.
Примеры
import subprocess
# простой запуск
result = subprocess.run(['ls', '-la'], capture_output=True, text=True)
print(result.stdout)
import subprocess
# проверка кода возврата
subprocess.run(['python', '--version'], check=True) # CalledProcessError при ошибке
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности