Курс 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. Отладчик pdb: начало работы
  2. Тестирование функции сложения
  3. Секреты Python
  4. Функция с *args.
  5. Анонимные функции в Python
  6. Работа с набором данных CIFAR10 в PyTorch
  7. Переименование файлов в Python
  8. Создание списков в Python
  9. Работа с датами в Python
  10. Функция reduce() в Python
  11. Python: библиотеки и функции
  12. Генераторы в Python
  13. Равенство и идентичность в Python
  14. Класс Counter() для подсчета элементов
  15. Вложенные циклы в Python
  16. Добавление цвета в консоли
  17. Работа с парами ключ-значение
  18. Тест скорости набора текста на Python
  19. Новшества Flask 2.0
  20. Тестирование с unittest
  21. Передача аргументов через **arguments
  22. Удаление дубликатов из списка
  23. Изменение переменной в Python: nonlocal
  24. Объединение Python и Shell
  25. Курс Data Scientist в медицине
  26. Преобразование списков в словарь
  27. Цикл for в Python
  28. Установка и использование Telegram API в Python
  29. Метод get для словаря
  30. Сравнение неупорядоченных списков
  31. Передача аргументов в Python
  32. Оператор умножения для вектора
  33. Значения по умолчанию в Python
  34. Срезы в Python
  35. Функция с **kwargs в Python
  36. Подписка на Kaspersky Team
  37. Условные выражения в Python
  38. Оптимизация памяти с slots
  39. discard() — удаление элемента из множества
  40. Работа с пользовательским вводом
  41. Названия переменных
  42. Объединение словарей в Python
  43. Форматирование чисел в Python
  44. Использование html-скриптов в Jupyter Notebook
  45. Обработка исключений в Python
  46. Установка максимального количества цифр
  47. Переопределение метода __and__
  48. Фильтрация списка чисел

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