Подпроцесс Python: как использовать подпроцесс в Python

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

Пример подпроцесса Python

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

В официальных документах Python мы можем прочитать, что подпроцесс следует использовать для доступа к системным командам. Модуль подпроцесса позволяет нам запускать процессы, подключаться к их каналам ввода/вывода/ошибок и получать их коды возврата.

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

Функция run () была добавлена ​​в Python 3.5; если вам нужно сохранить совместимость со старыми версиями, см. раздел Старый высокоуровневый API.

Он предлагает интерфейс более высокого уровня, чем некоторые другие доступные модули, и предназначен для замены функций такие как os.system () , os.spawn * () , os.popen * () , команды popen2. * () и . * () . Чтобы упростить сравнение подпроцесса с этими другими модулями, многие из приведенных здесь примеров воссоздают те, которые использовались для os и popen .

Запустить процесс на Python

Вы можете запустить процесс в Python, используя вызов функции Popen. Приведенная ниже программа запускает программу UNIX «cat», а второй параметр является аргументом. Это эквивалент «cat mod.py». Вы можете запустить программу с любым параметром.

Теперь внутри папки вашего проекта python создайте два файла.

  1. app.py
  2. mod.py

Внутри mod.py напишите следующий код.

//mod.pystudent = {'name': 'Krunal', 'enno': 21, 'college': 'vvp college'} 

Теперь напишите следующий код внутри файла app.py .

//app.pyfrom subprocess import Popen, PIPEprocess =  Popen (['cat', 'mod.py'], stdout = PIPE, stderr = PIPE) stdout, stderr = process.communicate () print (stdout) 

См. Вывод ниже.

Вызов process.communicate () считывает ввод и вывод из процесса. Стандартный вывод — это вывод процесса. Stderr будет записан только в случае возникновения ошибки. Если вы хотите дождаться завершения программы, вы можете вызвать функцию Popen.wait ().

Subprocess call ()

Подпроцесс имеет вызов метода (), который можно использовать для запуска программы. Параметр — это список, первым аргументом которого должно быть имя программы. Полное определение следующее.

 subprocess.call (args, *, stdin = None, stdout = None, stderr = None, shell = False) 

См. следующий пример кода.

В нем перечислены все файлы и папки в текущем каталоге.

Сохранить вывод процесса (stdout)

Мы можем получить вывод программы и сохранить его в строке напрямую, используя check_output. Метод определяется следующим образом.

 subprocess.check_output (args, *, stdin = None, stderr = None, shell = False, universal_newlines = False) 

См. Следующий пример.

//app.pyimport subprocesss = subprocess.check_output (["echo", "AppDividend"]) print ("s =" + s.decode ('utf-8  ')) 

См. вывод ниже.

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

//app.pyimport subprocess # Команда с расширениями оболочкиubprocess.call ('echo $ HOME', shell = True) 

См. Результат.

Ошибка Обработка в подпроцессе

Значение, возвращаемое функцией call () , является кодом выхода программы. Вызывающий отвечает за его интерпретацию для обнаружения ошибок.

Функция check_call () работает так же, как функция call () , за исключением того, что проверяется код выхода, и если он указывает, что произошла ошибка, тогда возникает исключение CalledProcessError .

См. следующий код.

//app.pyimport subprocesssubprocess.  check_call (['false']) 

См. вывод.

Наконец, пример подпроцесса Python окончен.

Оцените статью
nanomode.ru
Добавить комментарий