Курс 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. Функция divmod() в Python
  2. Работа со строками в Python
  3. Отслеживание прогресса с tqdm
  4. Numpy: разбиение массивов
  5. Удаление файлов в Python
  6. Рекурсия для обращения строки
  7. Преобразование объекта в строку
  8. Создание словарей с defaultdict()
  9. Форматирование строк с % в Python
  10. Замена атрибута в именованном кортеже
  11. Добавление вложенных списков
  12. Запуск внешнего кода в Jupyter
  13. Повторение элементов в Python
  14. Копирование списков в Python
  15. Хэш-функции в Python
  16. Метод rlshift для битового сдвига
  17. Метод add для класса Vector
  18. Создание генераторов
  19. Объединение строк с помощью метода join
  20. Форматирование заголовков в Python
  21. Поиск уникальных и повторяющихся элементов
  22. Изменения в обработке логических значений
  23. Создание именованных кортежей в Python
  24. Работа с контекст-менеджером «with»
  25. Генерация UUID в Python
  26. Разделение списка на гнппы
  27. Частичное совпадение ввода
  28. kwargs в Python
  29. Python: Фильтрация списков с помощью filter()
  30. Отладка в Python
  31. Переворот строки
  32. Конвертация текстовых чисел с помощью Numerizer
  33. Основы работы с базами данных в Python
  34. Равенство и идентичность в Python
  35. Работа с Colorama
  36. Распаковка аргументов в Python
  37. Переопределение метода __and__
  38. Работа с PosixPath() в Python
  39. Получение текущей даты и времени с помощью datetime
  40. Приоритет операций в Python
  41. Создание веб-приложения с Flask
  42. Метод __iand__ для пользовательских классов
  43. Синтаксис переменных цикла в Python
  44. Игра Виселица на Python
  45. Импорт объектов из модулей
  46. Замена символов в строке
  47. Значения по умолчанию в Python
  48. Кортеж в Python: создание, доступ, изменение

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