Курс 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. Создание директории в Python
  3. Декоратор Ajax required
  4. Сортировка HTML-элементов
  5. Создание Telegram-бота на Python
  6. Операторы присваивания в Python
  7. Применение команды break
  8. Форматирование строк в Python
  9. Pretty-printing JSON в Python
  10. Замена текста в Python
  11. Срез списка в Python
  12. Генераторы в Python
  13. Преобразование чисел в восьмеричную строку
  14. Создание коллекций из генератора
  15. Структура данных deque в Python
  16. Атрибуты класса и экземпляра
  17. Объединение словарей в Python
  18. Метод __irshift__ для побитового сдвига вправо
  19. GitHub в Telegram: подписка на уведомления
  20. Проверка элементов списка условием
  21. Получение срезов итераторов
  22. Многоточие в Python
  23. Метод join() для объединения элементов
  24. Перегрузка операторов в Python
  25. Переопределение метода __rshift__
  26. Строковое представление объектов
  27. Создание панели меню Tkinter
  28. Howdoi — получение ответов из терминала
  29. Непрерывная проверка в Python
  30. Обратный список чисел
  31. Объединение коллекций в Python
  32. Установка пакета в Python
  33. Форматирование строк с помощью f-строк
  34. Подсчет частоты элементов с Counter
  35. Python enumerate() использование
  36. Работа с itertools
  37. Оптимизация памяти с помощью __slots__
  38. Компиляция регулярных выражений
  39. Преобразование многоуровневого словаря
  40. Определение размера папок в Python
  41. Тестирование с unittest
  42. Получение комбинаций в Python
  43. Генератор списка в Python
  44. Условные выражения в Python
  45. Управление виртуальными окружениями в Python
  46. Переворот списка в Python
  47. F-строки в Python
  48. Функция all() в Python

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