Автор оригинала: Pankaj Kumar.
Здравствуйте, читатели! В этой статье мы подробно остановимся на модуле подпроцесса Python .
Итак, давайте начнем!
Что такое модуль подпроцесса в Python?
Прежде чем разобраться в функциональности модуля подпроцесса, давайте рассмотрим следующую ситуацию–
Обычно мы пишем код на Python, чтобы автоматизировать процесс или получить результаты без ручного вмешательства через какую-либо форму пользовательского интерфейса или любую форму, связанную с данными. Но что, если нам нужно получить информацию на уровне системы для какой-либо операции или функциональности? Как мы обрабатываем скрипт системного уровня в Python?
Это когда Модуль подпроцесса Python
появляется на картинке.
С помощью модуля подпроцесса мы можем обрабатывать сценарии системного уровня в рамках фрагмента кода Python. Это позволяет нам сформировать соединение с входом. вывод, а также конвейер ошибок и коды системных процессов.
Модуль подпроцесса внедряет различные методы для запуска сценариев системного уровня в среде Python:
- подпроцесс.вызов()
- подпроцесс.запуск()
- подпроцесс.check_output()
- подпроцесс.Popen() и communicate() функции
Давайте теперь посмотрим на них по очереди!
1. Функция subprocess.call()
Чтобы использовать функции, связанные с модулем подпроцесса, нам необходимо импортировать модуль в среду Python.
Функция subprocess.call() выполняет команду, указанную в качестве аргументов, и возвращает значение кода, выполненного успешно или нет.
Взгляните на приведенный ниже синтаксис!
subprocess.call(arguments, shell=True)
Пример 01:
В приведенном ниже примере мы пытаемся выполнить “echo Hello world” с помощью сценариев Python.
Для того же, с функцией call (), первый аргумент (echo) рассматривается как исполняемая команда, а аргументы после первых аргументов рассматриваются как аргументы командной строки.
Кроме того, нам нужно указать shell , чтобы аргументы обрабатывались как строка. Если установлено значение False, аргументы обрабатываются как путь или пути к файлам.
import subprocess print(subprocess.call(["echo" , "Hello world"],shell=True))
Выход:
Как показано ниже, он возвращает 0 в качестве кода возврата. Любое другое значение, возвращаемое кодом, говорит о том, что выполнение команды не было успешным.
"Hello world" 0
Пример 02:
В этом примере мы выполнили команду “ls-l” через скрипт python.
import subprocess subprocess.call(["ls","-l"],shell=True)
Выход:
-rw-r--r-- 1 smulani 1049033 Feb 27 10:40 check.py
2. Команда subprocess.run()
Как видно выше, функция call() просто возвращает код возврата выполненной команды. Это ни в коем случае не помогает нам проверить входные и контрольные параметры.
Для того же у нас есть функция subprocess.run () , которая помогает нам выполнить сценарий bash или system в коде python, а также возвращает код возврата команды.
Кроме того, он также возвращает аргументы, переданные функции. Таким образом, это помогает нам проверить входные данные для системных сценариев.
Пример:
import subprocess print(subprocess.run(["echo","Hello World"],shell=True))
Выход:
"Hello World" CompletedProcess(args=['echo', 'Hello World'], returncode=0)
3. Подпроцесс.Функция Popen()
Подпроцесс .Функция Popen()
позволяет нам выполнять дочерние программы как совершенно новый внутренний процесс. Кроме того, это можно использовать для выполнения команд оболочки в python.
Синтаксис:
subprocess.Popen(arguments, stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True)
- stdout: выходное значение команды
- stderr: Ошибка, возвращенная командой
Рекомендуемое чтение – Python stdin, stdout, stderr
Пример:
import subprocess process = subprocess.Popen( ['echo', 'Hello World'],shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) stdout, stderr = process.communicate() print(stdout)
Здесь мы также использовали функцию communicate () . Эта функция помогает нам считывать и извлекать входные, выходные и значения ошибок сценария, выполняемого непосредственно из процесса, как показано выше.
Выход:
b'"Hello World"\r\n'
Вывод
На этом мы подошли к концу этой темы. Не стесняйтесь комментировать ниже, если у вас возникнут какие-либо вопросы. Для получения дополнительных сообщений, связанных с Python, оставайтесь с нами.
А до тех пор Счастливого Обучения!! 🙂