Курс 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"
- Работа со строками в Python
- Импорт с альтернативным именем
- Использование эмодзи в Python
- Управление браузером с Selenium
- Генераторы в Python
- Разделение строки на подстроки в Python
- Создание графиков в терминале
- Динамическая типизация в Python
- Измерение времени выполнения кода
- Форматирование вывода списков
- Метод eq для сравнения объектов
- Работа с пользовательским вводом
- Работа с буфером обмена на Python
- Преобразование символов в нижний регистр
- Логирование в Python
- Подчеркивание в REPL
- Оператор == в Python
- Замена атрибута в именованном кортеже
- Оптимизация памяти в Python
- Обход дочерних элементов BeautifulSoup
- Метод rrshift для пользовательских объектов
- Подсчет часто встречающихся элементов
- Создание виртуальной среды
- Пространство имен в Python
- Генерация фальшивых данных с Faker
- Работа со словарями Python
- Извлечение новостей с помощью newspaper3k
- Итераторы с потерямиZIP
- Форматирование строк в Python
- Форматирование строк с помощью f-строк
- Работа с атрибутом dict
- Проверка файла .py на синтаксис.
- Управление мышью и клавиатурой с Pyautogui
- Метод join() для объединения строк
- CLI-инструмент howdoi
- Уникальность ключей в словаре
- Построение графиков в Matplotlib
- Управление User-Agent в Python
- Numpy: разбиение массивов
- Вывод с переменной через запятую
- Динамическая типизация в Python
- Python: изменяемые и неизменяемые коллекции
- Удаление символов новой строки в Python.
- Использование defaultdict в Python
- Python: возвращение нескольких значений
- Реализация метода __abs__ в Python
- Транспонирование 2D-массива с помощью zip















