Рубрики
Без рубрики

Модуль подпроцесса Python

Здравствуйте, читатели! В этой статье мы подробно остановимся на модуле подпроцесса Python.

Автор оригинала: Pankaj Kumar.

Здравствуйте, читатели! В этой статье мы подробно остановимся на модуле подпроцесса Python .

Итак, давайте начнем!

Что такое модуль подпроцесса в Python?

Прежде чем разобраться в функциональности модуля подпроцесса, давайте рассмотрим следующую ситуацию–

Обычно мы пишем код на Python, чтобы автоматизировать процесс или получить результаты без ручного вмешательства через какую-либо форму пользовательского интерфейса или любую форму, связанную с данными. Но что, если нам нужно получить информацию на уровне системы для какой-либо операции или функциональности? Как мы обрабатываем скрипт системного уровня в Python?

Это когда Модуль подпроцесса Python появляется на картинке.

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

Модуль подпроцесса внедряет различные методы для запуска сценариев системного уровня в среде Python:

  1. подпроцесс.вызов()
  2. подпроцесс.запуск()
  3. подпроцесс.check_output()
  4. подпроцесс.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, оставайтесь с нами.

А до тех пор Счастливого Обучения!! 🙂