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

Подпроцесс Python

Python Subprocess, Python Subprocess Pofen, Subprocess Python 3, Subprocess Python Subprocess, Python Subprocess Pipple, Run, Commiticate Functions Triator

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

Модуль Subcessess Python обеспечивает простые функции, которые позволяют нам порождать новый процесс и получить их обратные коды. Этот модуль был введен в Python V2.4.

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

Подпроцесс Python

Модуль подпроцесса Python – это мощный инструмент и был введен для замены различных старых модулей/функций, присутствующих в Python, например:

  • os.system.
  • OS.spawn и связанные функции
  • OS.POPEN и связанные с ними функции
  • POPEN2. *
  • команды. *

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

Вызов подпроцесса Python ()

Эта функция используется для запуска команды и получить код возврата команды. Давайте быстро посмотрим на пример фрагмента кода:

import subprocess
print(subprocess.call(["pwd", "-P"]))

Выход будет:

Давайте понять, что произошло в вышеуказанной программе:

  • Когда список аргументов пройден, первый аргумент интерпретируется как исполняемый файл.
  • Параметры из второго параметра внутрь рассматриваются как аргументы командной строки к программе.
  • Мы могли бы также сделать:
  • С оболочкой, быть правдой, Звоните () Функция полностью обработает это как команда и запустить ее как есть. Вывод показал бы все файлы и каталоги в текущей папке.

Обратите внимание, что в системах на основе POSIX, код возврата 0 для успеха и от 1 до 255 для чего-либо еще. Эти выходные коды интерпретируются сценариями машин для оценки событий успеха и сбоев.

Python Subprocess Run ()

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

import subprocess
print(subprocess.run(["pwd", "-P"]))

Выход будет:

Обратите внимание, что Беги () Функция была добавлена в Python 3.5. Четкая разница между Беги () и Звоните () Функция это то, что Звоните () Функция не поддерживает входные и проверки параметров.

Python Secrocess Check_Call ()

Эта функция работает как Звоните () Функция, но если произошла ошибка в запуске указанной команды, она поднимает НазываетсяProcessError исключение. Давайте быстро посмотрим на пример фрагмента кода:

import subprocess
print(subprocess.check_call("false"))

Выход будет:

Мы использовали ложь Команда как всегда возвращается с ошибкой возврата кода.

Python subcrocess check_output ()

Когда мы используем Звоните () Функция для запуска команды вывод связан с родительским процессом и не устранен для программы вызова. Мы можем использовать check_output () Функция для захвата вывода для последующего использования. Давайте быстро посмотрим на пример фрагмента кода:

import subprocess
output = subprocess.check_output(['ls', '-1'])
print("Output is {} bytes long.".format(len(output)))

Выход будет:

Python Subprocess общается ()

Мы можем использовать общаться () Функция в этом модуле Python для чтения ввода и вывода на форуме самого процесса. stdout это процесс процесса и Стдерр населен в случае ошибки. Давайте быстро посмотрим на пример фрагмента кода:

import subprocess
process = subprocess.Popen(
    ['cat', 'hello.py'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
stdout, stderr = process.communicate()
print(stdout)

Выход будет:

Обратите внимание, что у нас есть Hello.py Сценарий, который только что говорит Печать («Здравствуйте») Отказ

Python Subprocess Popen

Python Subprocess Popen используется для выполнения дочерней программы в новом процессе. Мы можем использовать его, чтобы запустить некоторые команды оболочки. Давайте посмотрим на использование POPEN через простой пример программы.

import subprocess

process = subprocess.Popen(['ls', '-ltr'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)

print(process.communicate())

process = subprocess.Popen(['echo', 'Pankaj'], stdout=subprocess.PIPE, stderr=subprocess.PIPE, stdin=None)

print(process.communicate())

process = subprocess.Popen(['ping', '-c 1', 'journaldev.com'], stdout=subprocess.PIPE)

print(process.communicate())

При выполнении он производит следующий вывод.

(b'total 8\n-rw-r--r--  1 pankaj  staff  396 Dec  9 22:00 subprocess_popen.py\n', b'')
(b'Pankaj\n', b'')
(b'PING journaldev.com (209.124.77.163): 56 data bytes\n64 bytes from 209.124.77.163: icmp_seq=0 ttl=53 time=474.153 ms\n\n--- journaldev.com ping statistics ---\n1 packets transmitted, 1 packets received, 0.0% packet loss\nround-trip min/avg/max/stddev = 474.153/474.153/474.153/0.000 ms\n', None)

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

Ссылка: API док