Курс 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. Карта бомбоубежищ в Москве и Питере
  2. Методы shutil для работы с файлами
  3. Python OrderedDict и fromkeys() — работа с словарями
  4. Функции all и any в Python
  5. Метод __irshift__ для Python
  6. Вычисление натурального логарифма в NumPy
  7. Импорт модулей в Python 3.12
  8. Итерация по копии коллекции
  9. Методы и функции в Python
  10. Декораторы в Python
  11. Преобразование списков в словарь
  12. Считывание бинарного файла в Python
  13. Отладка в Python
  14. Чтение и запись TOML-конфигов
  15. Подсказки типов в Python
  16. Работа с модулем bisect
  17. Манипуляция формой массива в Numpy
  18. Работа с YAML в Python: PyYAML.
  19. Получение комбинаций в Python
  20. Python Enumerate
  21. Переопределение метода __eq__
  22. Преобразование типов данных в set comprehension
  23. Вставка переменных в шаблоны Flask
  24. Операции с датами в Python
  25. Метод join для наборов
  26. Функция pow() — возвести число в степень
  27. Инверсия списка и строки в Python
  28. Функциональное программирование в Python
  29. Установка и использование TensorFlow
  30. Наследование в программировании
  31. Управление асинхронными задачами с помощью Semaphore
  32. Глобальные переменные в Python
  33. Оптимизация сравнения в Python
  34. Работа с файлами в Python
  35. Конвертация изображений в PDF
  36. Преобразование объекта в строку
  37. Оператор assert в Python
  38. Метод join() для объединения элементов строки
  39. Извлечение новостей с newspaper3k
  40. Декораторы в Python
  41. Расчет времени выполнения
  42. Глобальные переменные в Python
  43. Создание новых списков в Python
  44. Изменение объектов в Python
  45. Определение локальных переменных в Python
  46. Транспонирование 2D-массива с помощью zip

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