Курс 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"

  1. Новшества Flask 2.0
  2. Профилирование с Pandas
  3. Проверка подстроки в строке
  4. Поиск кода
  5. Удаление первого элемента списка
  6. Структура данных deque в Python
  7. Оператор объединения словарей
  8. Декораторы с @wraps
  9. Присвоение значений переменным в Python
  10. Выборка чисел
  11. Декодирование строк в Python
  12. Каналы Senior: Python, Java, Frontend, SQL, C++
  13. Обработка аргументов Python
  14. Срезы в Python
  15. Приближение чисел в Python
  16. Профилирование кода на Python
  17. Переопределение метода __eq__
  18. Активация Matplotlib в Jupyter
  19. Основы слова
  20. Оператор zip в Python
  21. Основные функции и модули Python
  22. Применение функции map() в Python
  23. Применение функции к списку
  24. Поиск всех индексов подстроки
  25. Сохранение и загрузка модели в PyTorch
  26. Повторение и перенос строки
  27. Обход дочерних элементов BeautifulSoup
  28. Профилирование с cProfile
  29. Метод enumerate() в Python
  30. Форматирование строк с помощью f-строк
  31. Проблемы с именами переменных
  32. Структурирование данных с Pydantic
  33. Работа с изображениями PIL
  34. Ускоренный импорт библиотек
  35. Проверка однородности элементов списка
  36. Извлечение данных из JSON
  37. Создание коллекций из выражения-генератора
  38. Python Enumerate
  39. Измерение времени выполнения кода с использованием time
  40. Непрерывная проверка в Python
  41. Запрос пароля с помощью getpass
  42. Решение переменной Шредингера
  43. Удаление элемента по индексу в Python
  44. Вычисление фазы комплексного числа
  45. Генерация QR-кодов с Python
  46. Объединение списков с использованием itertools.chain
  47. Работа с SQLite в Python

Marketello читают маркетологи из крутых компаний