Курс Python → Запуск внешних программ с subprocess
Библиотека subprocess в Python предоставляет возможность запускать внешние программы и взаимодействовать с ними из Python-скрипта. Самый функциональный класс в этой библиотеке — Popen. Он позволяет выполнять дочерние процессы в новых процессах и обеспечивает более гибкое взаимодействие с ними. Например, если у вас есть сервер на Linux и установлен Python 2, вы можете использовать следующий код для замены интерпретатора Python 2 на Python 3:
subprocess.Popen(['test.py'], executable='python3')
С помощью Popen вы можете также сохранять весь ввод и вывод, а также перенаправлять их в файл для последующего использования. Вы можете запустить процесс в фоновом режиме или дождаться его завершения. Эти возможности могут быть использованы асинхронно с библиотекой asyncio.
Обычно Popen не ждет завершения процесса, поэтому для ожидания завершения процесса можно использовать метод wait. Это позволяет избежать проблем с асинхронным выполнением кода и гарантирует корректное завершение процесса.
Пример:
import subprocess
# Создаем новый процесс для выполнения команды
process = subprocess.Popen(['ls', '-la'], stdout=subprocess.PIPE, stderr=subprocess.PIPE)
# Ждем завершения процесса
process.wait()
# Получаем вывод и ошибки
output, error = process.communicate()
print("Output:", output.decode())
print("Error:", error.decode())
Другие уроки курса "Python"
- Карта бомбоубежищ в Москве и Питере
- Методы shutil для работы с файлами
- Python OrderedDict и fromkeys() — работа с словарями
- Функции all и any в Python
- Метод __irshift__ для Python
- Вычисление натурального логарифма в NumPy
- Импорт модулей в Python 3.12
- Итерация по копии коллекции
- Методы и функции в Python
- Декораторы в Python
- Преобразование списков в словарь
- Считывание бинарного файла в Python
- Отладка в Python
- Чтение и запись TOML-конфигов
- Подсказки типов в Python
- Работа с модулем bisect
- Манипуляция формой массива в Numpy
- Работа с YAML в Python: PyYAML.
- Получение комбинаций в Python
- Python Enumerate
- Переопределение метода __eq__
- Преобразование типов данных в set comprehension
- Вставка переменных в шаблоны Flask
- Операции с датами в Python
- Метод join для наборов
- Функция pow() — возвести число в степень
- Инверсия списка и строки в Python
- Функциональное программирование в Python
- Установка и использование TensorFlow
- Наследование в программировании
- Управление асинхронными задачами с помощью Semaphore
- Глобальные переменные в Python
- Оптимизация сравнения в Python
- Работа с файлами в Python
- Конвертация изображений в PDF
- Преобразование объекта в строку
- Оператор assert в Python
- Метод join() для объединения элементов строки
- Извлечение новостей с newspaper3k
- Декораторы в Python
- Расчет времени выполнения
- Глобальные переменные в Python
- Создание новых списков в Python
- Изменение объектов в Python
- Определение локальных переменных в Python
- Транспонирование 2D-массива с помощью zip















