Автор оригинала: 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 док