Курс 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
- Основы Python
- Функция zip() в Python
- Обработка исключений в Python
- Функция map() в Python
- Именование переменных в Python
- Асинхронное выполнение задач в процессах
- Открытие, чтение и закрытие файла
- Гибкие функции Python
- Метаклассы в Python
- Управление ресурсами с контекстными менеджерами
- Поиск индекса элемента
- Метод __imod__ для Python
- Функции в одну строку
- Перевод двоичного кода в целое число
- Итерация по коллекции в Python
- Создание лямбда-функций
- Аннотации типов в Python
- Структурирование именованных констант
- PUT запрос для обновления данных
- Синхронизация потоков с time.sleep()
- Возврат нескольких значений
- Использование type hints
- Работа с базами данных SQLite
- Аргументы *args и **kwargs
- Работа с рекламными данными в Pandas
- Метод rename() для переименования файлов и каталогов
- Ограничение ресурсов в Python
- Перезапуск ячейки в Jupyter Notebook с dostoevsky
- Запуск внешнего кода в Jupyter
- Управление виртуальными средами в Python
- Повторение элементов в Python
- Считывание бинарного файла в Python
- Создание новой даты в Python
- Печать комбинаций в Python с Itertools
- Лямбда-функции для min/max
- Numpy: разбиение массивов
- Функция divmod() в Python
- Резервирование символов в Python
- Генерация тестовых данных с factory_boy
- Ускорение кода с помощью векторизации
- Разделение строки с помощью re.split()
- Объединение списков в строку















