Курс 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. Методы shutil для работы с файлами
  2. Просмотр внешних файлов в %pycat
  3. Проверка версии Python
  4. Python Тесты и Гайды
  5. Обновление шаблона base.html
  6. Описание скриптов в README
  7. Работа с файлами в Python
  8. Генераторы в Python
  9. Хеширование паролей с использованием salt
  10. Возвращение нескольких значений
  11. Хэш-функции и метод цепочек
  12. Библиотека Chartify: руководство
  13. EMOT преобразование эмодзи в текст
  14. Обработка ошибок в Python
  15. Быстрый поиск кода
  16. Функциональное программирование.
  17. Отправка HTTP-запросов в Python
  18. Профилирование с cProfile
  19. Счетчик в Python: most_common()
  20. Копирование в Python
  21. Просмотр внешнего файла в Python
  22. Замер времени выполнения кода
  23. Функция __init__ в Python
  24. Преобразование чисел в Python
  25. Функция zip() в Python
  26. Пространство имен в Python
  27. Преобразование списка в словарь через генератор
  28. Функция map() в Python
  29. Метод ne для сравнения объектов
  30. Глобальные переменные в Python
  31. Именованные срезы в Python
  32. Метод setdefault() в Python
  33. Ускорение кода с помощью векторизации
  34. Игра Виселица на Python
  35. Вложенные циклы в Python
  36. Управление контекстом выполнения кода
  37. Изменения в обработке логических значений
  38. Распаковка аргументов в Python
  39. Работа с CSV файлами
  40. Counter() — подсчет элементов
  41. Переопределение метода __floordiv__
  42. Функция zip() для объединения списков
  43. Преобразование объекта в строку
  44. Оператор in для проверки наличия элемента
  45. Сортировка с помощью key
  46. Преобразование данных в Python

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