subprocess
Модуль subprocess позволяет создавать новые процессы, подключаться к их каналам ввода / вывода / ошибок и получать их коды возврата. Этот модуль предназначен для замены нескольких старых модулей и функций:
os.system
os.spawn*
Информацию о том, как можно использовать модуль subprocess для замены этих модулей и функций, можно найти в следующих разделах.
Смотрите также:
PEP 324 - предложение по развитию Python, предложение модуля subprocess
Использование модуля subprocess
Рекомендуемый подход к вызову субпроцессов - использовать функцию run () для всех возможных вариантов использования. Для более сложных случаев использования можно напрямую использовать базовый интерфейс Popen.
Функция run () была добавлена в Python 3.5; если вам нужно сохранить совместимость со старыми версиями, см. раздел Older high-level API.
run ()
CompletedProcess class
DEVNULL
PIPE - специальное значение для аргументов stdin, stdout, stderr класса Popen
STDOUT
SubprocessError exception
TimeoutExpired exception
CalledProcessError exception
Часто используемые аргументы
не заполнено...
Конструктор Popen
Создание базового процесса и управление им в этом модуле осуществляется классом Popen. Он предлагает большую гибкость, поэтому разработчики могут обрабатывать менее распространенные случаи, не охватываемые вспомогательными функциями.
Popen class - выполняет дочернюю программу в новом процессе
Исключения
не заполнено...
Вопросы безопасности
не заполнено...
Объекты Popen
Экземпляры класса Popen имеют следующие методы:
poll ()
wait () - ожидает пока дочерний процесс завершится
communicate () - взаимодействие с процессом
send_signal ()
terminate ()
kill ()
args - переданный в Popen аргумент args
stdin - записываемый объект потока, если аргумент
stdin = PIPE
stdout - считываемый объект потока, если аргумент
stdout = PIPE
stderr - считываемый объект потока, если аргумент
stderr = PIPE
pid - идентификатор ID дочернего процесса
returncode - код завершения дочернего процесса
Помощники Popen в Windows
STARTUPINFO class
Константы Windows
Модуль subprocess предоставляет следующие константы:
STD_INPUT_HANDLE
не заполнено...
Старый высокоуровневый API
До Python 3.5 эти три функции составляли высокоуровневый API для сопроцессов. Теперь вы можете использовать run () во многих случаях, но многие из существующих кодов вызывают эти функции.
call () - запускает команду, переданную в args
check_call ()
check_output ()
Замена старых функций модуля subprocess
не заполнено...
Устаревшие функции вызова оболочки
Этот модуль также предоставляет следующие унаследованные функции из модуля команд Python 2.x. Эти операции неявно вызывают системную оболочку, и ни одна из описанных выше гарантий безопасности и согласованности обработки исключений не действует для этих функций.
getstatusoutput ()
getoutput ()
Примечания
не заполнено...
Last updated