Курс 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"
- Новшества Flask 2.0
- Профилирование с Pandas
- Проверка подстроки в строке
- Поиск кода
- Удаление первого элемента списка
- Структура данных deque в Python
- Оператор объединения словарей
- Декораторы с @wraps
- Присвоение значений переменным в Python
- Выборка чисел
- Декодирование строк в Python
- Каналы Senior: Python, Java, Frontend, SQL, C++
- Обработка аргументов Python
- Срезы в Python
- Приближение чисел в Python
- Профилирование кода на Python
- Переопределение метода __eq__
- Активация Matplotlib в Jupyter
- Основы слова
- Оператор zip в Python
- Основные функции и модули Python
- Применение функции map() в Python
- Применение функции к списку
- Поиск всех индексов подстроки
- Сохранение и загрузка модели в PyTorch
- Повторение и перенос строки
- Обход дочерних элементов BeautifulSoup
- Профилирование с cProfile
- Метод enumerate() в Python
- Форматирование строк с помощью f-строк
- Проблемы с именами переменных
- Структурирование данных с Pydantic
- Работа с изображениями PIL
- Ускоренный импорт библиотек
- Проверка однородности элементов списка
- Извлечение данных из JSON
- Создание коллекций из выражения-генератора
- Python Enumerate
- Измерение времени выполнения кода с использованием time
- Непрерывная проверка в Python
- Запрос пароля с помощью getpass
- Решение переменной Шредингера
- Удаление элемента по индексу в Python
- Вычисление фазы комплексного числа
- Генерация QR-кодов с Python
- Объединение списков с использованием itertools.chain
- Работа с SQLite в Python















