Python Subprocess: Automate Your Processes Efficiently
Python subprocess – это модуль в Python, который позволяет запускать другие программы или скрипты из вашего Python кода. Он является частью стандартной библиотеки Python и предоставляет простой интерфейс для взаимодействия с внешними процессами операционной системы.
Для запуска внешнего процесса в Python с помощью subprocess нужно использовать функцию subprocess.run(). Эта функция принимает в качестве аргументов команду, которую нужно выполнить, и дополнительные параметры, такие как аргументы командной строки, рабочий каталог, использование труб или файловых дескрипторов и т.д.
Пример использования subprocess.run():
import subprocess
result = subprocess.run(['ls', '-l'], stdout=subprocess.PIPE)
print(result.stdout.decode())
В этом примере мы запускаем команду "ls -l" и выводим её вывод на экран. Значение stdout=subprocess.PIPE указывает на то, что мы хотим получить вывод команды в виде байтового объекта, который мы можем декодировать в строку. Если не указывать этот аргумент, вывод будет отправляться на стандартный вывод (консоль).
Subprocess также позволяет запускать процессы в фоновом режиме. Для этого используется аргумент subprocess.Popen(). Он работает аналогично subprocess.run(), но возвращает объект Popen, который позволяет управлять процессом.
Пример использования subprocess.Popen():
import subprocess
proc = subprocess.Popen(['sleep', '5'])
print("Запущен новый процесс!")
Здесь мы запускаем команду "sleep 5" в фоновом режиме. Процесс будет выполняться в фоновом режиме в течение 5 секунд.
Subprocess также позволяет управлять процессом, например, остановить его или отправить ему сигнал.
Пример использования методов Popen():
import subprocess
proc = subprocess.Popen(['sleep', '60'])
print("Процесс запущен.")
# Остановить процесс
proc.terminate()
print("Процесс остановлен.")
Здесь мы создаем объект Popen для запуска команды "sleep 60", затем останавливаем процесс с помощью метода terminate().
Кроме того, subprocess позволяет выполнять другие операции с процессами, например, перенаправлять стандартные потоки ввода-вывода, использовать трубы, изменять переменную окружения и многое другое.
В целом, subprocess – это мощный и удобный инструмент для запуска внешних процессов в Python. Он предоставляет чистый и простой интерфейс для взаимодействия с другими программами и дает большую свободу в управлении процессами.