Курс 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"
- Функция divmod() в Python
- Работа со строками в Python
- Отслеживание прогресса с tqdm
- Numpy: разбиение массивов
- Удаление файлов в Python
- Рекурсия для обращения строки
- Преобразование объекта в строку
- Создание словарей с defaultdict()
- Форматирование строк с % в Python
- Замена атрибута в именованном кортеже
- Добавление вложенных списков
- Запуск внешнего кода в Jupyter
- Повторение элементов в Python
- Копирование списков в Python
- Хэш-функции в Python
- Метод rlshift для битового сдвига
- Метод add для класса Vector
- Создание генераторов
- Объединение строк с помощью метода join
- Форматирование заголовков в Python
- Поиск уникальных и повторяющихся элементов
- Изменения в обработке логических значений
- Создание именованных кортежей в Python
- Работа с контекст-менеджером «with»
- Генерация UUID в Python
- Разделение списка на гнппы
- Частичное совпадение ввода
- kwargs в Python
- Python: Фильтрация списков с помощью filter()
- Отладка в Python
- Переворот строки
- Конвертация текстовых чисел с помощью Numerizer
- Основы работы с базами данных в Python
- Равенство и идентичность в Python
- Работа с Colorama
- Распаковка аргументов в Python
- Переопределение метода __and__
- Работа с PosixPath() в Python
- Получение текущей даты и времени с помощью datetime
- Приоритет операций в Python
- Создание веб-приложения с Flask
- Метод __iand__ для пользовательских классов
- Синтаксис переменных цикла в Python
- Игра Виселица на Python
- Импорт объектов из модулей
- Замена символов в строке
- Значения по умолчанию в Python
- Кортеж в Python: создание, доступ, изменение















