Конвейерная обработка — это мощная концепция программирования, которая позволяет использовать выходные данные одной команды или процесса в качестве входных данных для другой команды или процесса. В Python модуль подпроцесса предоставляет различные методы для реализации функций конвейера. В этой статье мы рассмотрим несколько методов с примерами кода, чтобы продемонстрировать, как использовать конвейер с использованием модуля подпроцесса в Python.
Метод 1: использование subprocess.Popen и общаться
import subprocess
# Run command1 and pipe its output to command2
command1 = ["ls", "-l"]
command2 = ["grep", "file"]
process1 = subprocess.Popen(command1, stdout=subprocess.PIPE)
process2 = subprocess.Popen(command2, stdin=process1.stdout, stdout=subprocess.PIPE)
output, _ = process2.communicate()
print(output.decode())
Метод 2: использование subprocess.Popen с Shell=True
import subprocess
# Run command1 and pipe its output to command2
command = "ls -l | grep file"
process = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE)
output, _ = process.communicate()
print(output.decode())
Метод 3. Использование subprocess.run с входными и Capture_output
import subprocess
# Run command1 and pipe its output to command2
command1 = ["ls", "-l"]
command2 = ["grep", "file"]
output1 = subprocess.run(command1, capture_output=True)
output2 = subprocess.run(command2, input=output1.stdout, capture_output=True)
print(output2.stdout.decode())
Метод 4. Использование subprocess.PIPE и Shell=True
import subprocess
# Run command1 and pipe its output to command2
command = "ls -l | grep file"
process = subprocess.run(command, shell=True, stdout=subprocess.PIPE)
print(process.stdout.decode())
Метод 5: использование subprocess.check_output с Shell=True
import subprocess
# Run command1 and pipe its output to command2
command = "ls -l | grep file"
output = subprocess.check_output(command, shell=True)
print(output.decode())
Конвейерное соединение в Python с использованием модуля подпроцесса обеспечивает гибкий способ подключения нескольких команд или процессов и передачи вывода одного в качестве входных данных в другой. В этой статье мы рассмотрели пять различных методов реализации конвейерной функциональности в Python, используя subprocess.Popen, subprocess.run и subprocess.check_output. В зависимости от вашего конкретного варианта использования вы можете выбрать метод, который лучше всего соответствует вашим потребностям.