Сообщить об ошибке.

Модуль subprocess в Python, запуск новых процессов

Создание и запуск программ в новых процессах

Запуск новых процессов - обычная задача на любом языке программирования и очень распространенная на языке высокого уровня, таком как Python.

Модуль subprocess позволяет создавать новые процессы, подключаться к их каналам ввода/вывода/ошибок и получать их коды возврата. Этот модуль предназначен для замены нескольких старых модулей и функций: os.system и os.spawn*.

Рекомендуемый подход к вызову подпроцессов заключается в использовании функции subprocess.run() для всех случаев использования, которые она может обработать. Для более сложных вариантов использования базовый интерфейс subprocess.Popen() можно использовать напрямую.

Функция subprocess.run() была добавлена ​​в Python-3.5. Если необходимо сохранить совместимость с устаревшими версиями API, то смотрите раздел "Устаревшие функции модуля subprocess".

Внимание! Пользователям и администраторам серверов, которые пишут приложения под linux, рекомендуется обратить внимание на сторонний модуль sh. Модуль sh - это удобная, простая в использовании и полноценная замена встроенного модуля subprocess.


Функция run() модуля subprocess в Python

Функция run() модуля subprocess запускает команду с аргументами, ждет завершения команды, а затем возвращает экземпляр CompletedProcess() с результатами работы.

Объект CompletedProcess модуля subprocess в Python

Объект `CompletedProcess()` модуля `subprocess` возвращает значение из `subprocess.run()`, представляющее завершенный процесс.

Перенаправление вывода в модуля subprocess

В этом разделе представлены специальные значения, которые могут принимать аргументы `stdin`, `stdout` или `stderr` модуля `subprocess`.

Часто используемые параметры модуля subprocess в Python

Для поддержки широкого спектра вариантов использования функций модуля принимают большое количество необязательных аргументов. Для большинства типичных случаев использования, многие из этих аргументов могут быть безопасно оставлены со значениями по умолчанию.

Класс Popen() модуля subprocess в Python

Класс Popen() модуля subprocess выполняет дочернюю программу в новом процессе. В POSIX класс использует os.execvp() подобное поведение для выполнения дочерней программы. В Windows класс использует функцию Windows CreateProcess().

Объект Popen модуля subprocess в Python

При вызове subprocess.Popen() возвращает объект Popen, который имеет методы, описанные ниже. Материал дает описание всех методов объекта Popen, принимаемых аргументов, а так же предлагает примеры использования в коде Python.

Класс STARTUPINFO() модуля subprocess в Python

Класс `STARTUPINFO()` модуля `subprocess` используется в аргументе `startupinfo` при создании `subprocess.Popen()`, через который осуществляется частичная поддержка структуры Windows `STARTUPINFO`.

Исключения модуля subprocess в Python

В этом разделе представлены исключения, специфичные для модуля `subprocess`.

Константы и флаги OS Windows модуля subprocess

Модуль `subprocess` предоставляет следующие константы, используемые в помощнике Windows.

Устаревшие функции модуля subprocess в Python

До Python-3.5 эти три функции включали высокоуровневый API для модуля `subprocess`. Теперь вместо них можно использовать функцию `subprocess.run()`