Курс 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. Работа со строками в Python
  2. Импорт с альтернативным именем
  3. Использование эмодзи в Python
  4. Управление браузером с Selenium
  5. Генераторы в Python
  6. Разделение строки на подстроки в Python
  7. Создание графиков в терминале
  8. Динамическая типизация в Python
  9. Измерение времени выполнения кода
  10. Форматирование вывода списков
  11. Метод eq для сравнения объектов
  12. Работа с пользовательским вводом
  13. Работа с буфером обмена на Python
  14. Преобразование символов в нижний регистр
  15. Логирование в Python
  16. Подчеркивание в REPL
  17. Оператор == в Python
  18. Замена атрибута в именованном кортеже
  19. Оптимизация памяти в Python
  20. Обход дочерних элементов BeautifulSoup
  21. Метод rrshift для пользовательских объектов
  22. Подсчет часто встречающихся элементов
  23. Создание виртуальной среды
  24. Пространство имен в Python
  25. Генерация фальшивых данных с Faker
  26. Работа со словарями Python
  27. Извлечение новостей с помощью newspaper3k
  28. Итераторы с потерямиZIP
  29. Форматирование строк в Python
  30. Форматирование строк с помощью f-строк
  31. Работа с атрибутом dict
  32. Проверка файла .py на синтаксис.
  33. Управление мышью и клавиатурой с Pyautogui
  34. Метод join() для объединения строк
  35. CLI-инструмент howdoi
  36. Уникальность ключей в словаре
  37. Построение графиков в Matplotlib
  38. Управление User-Agent в Python
  39. Numpy: разбиение массивов
  40. Вывод с переменной через запятую
  41. Динамическая типизация в Python
  42. Python: изменяемые и неизменяемые коллекции
  43. Удаление символов новой строки в Python.
  44. Использование defaultdict в Python
  45. Python: возвращение нескольких значений
  46. Реализация метода __abs__ в Python
  47. Транспонирование 2D-массива с помощью zip

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