Курс 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"
- Оптимизация памяти с slots
- Метод join() с набором
- Реверс строки в Python
- Подчеркивание в REPL
- Функции range() в Python
- Модуль Antigravity в Python 3
- Сортировка в Python
- Функция zip() в Python
- Перегрузка операторов в Python
- Декораторы в Python
- Моржовый оператор в Python 3.8
- Создание коллекций из генератора
- Работа с дробями в Python
- Сравнение def и lambda-функций
- Изменение элемента списка
- Списки: объединение, изменение
- Модуль math: основные функции
- Использование type hints
- Создание комплексных чисел
- OrderedDict — упорядоченный словарь
- Подсчет часто встречающихся элементов
- Работа с Colorama
- Профилирование кода на Python
- Настройка нарезки списков
- Поиск всех индексов подстроки
- Конструктор в Python
- Список переменных в Python
- Оптимизация поиска в словарях
- Декораторы в Python
- Правила именования переменных
- Хранение переменных в словаре.
- Измерение времени выполнения кода
- Обмен переменными в Jupyter
- Удаление дубликатов из списка с помощью dict.fromkeys
- Перегрузка операторов в Python
- Работа с комплексными числами в Python
- Философия Python
- Метод rxor для операции побитового исключающего «или»
- Управление доступом к модулю
- Профилирование данных с Pandas.
- Monkey Patching в Python
- Модуль os в Python: работа с файлами















