Курс 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. Переопределение метода __lshift__
  2. Итерация по копии коллекции
  3. Логические значения в Python
  4. Обмен значений переменных в Python
  5. Проверка кортежей.
  6. Работа с JSON данными в Python
  7. Комментарии в Python
  8. Функции в Python: создание и вызов
  9. Создание списков в Python
  10. Функция zip() в Python
  11. Оператор @ для умножения матриц
  12. Создание задания в Cron
  13. Создание .exe файла с pyinstaller
  14. Функции-генераторы в Python
  15. Изменение объектов в Python
  16. Асинхронное выполнение задач в Python
  17. Метод rxor для операции побитового исключающего «или»
  18. Объединение словарей в Python
  19. Многострочные комментарии в Python
  20. Группировка элементов в словарь
  21. Лямбда-функции в Python
  22. Роль ключевого слова self
  23. Структуры данных в Python
  24. Метод __iand__ для пользовательских классов
  25. SciPy: широкий функционал для математических операций
  26. Defaultdict в Python
  27. Разработка Telegram-ботов
  28. Мониторинг памяти с Pympler
  29. Работа с argparse
  30. Удаление эмодзи с помощью pandas
  31. Функция map() и ленивая оценка
  32. Python: цикл for и оператор присваивания
  33. Асинхронное программирование с asyncio
  34. Перегрузка операторов в Python
  35. Функция __init__ в Python
  36. Считывание бинарного файла в Python
  37. Переопределение метода __rshift__
  38. Сохранение Unicode в JSON
  39. Оператор is в Python
  40. Удаление элементов из списка в Python
  41. split() без разделителя
  42. Уникальные значения из списка
  43. Конвертация текстовых чисел с помощью Numerizer
  44. Установка и использование Logzero
  45. Работа с множествами в Python

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