Курс 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. Модуль itertools: комбинации и перестановки
  2. Отделение звука от видео
  3. Упрощенный вывод данных в Python
  4. Автоматизация действий с Pyautogui
  5. Проверка на истинность объектов в Python
  6. Генерация UUID в Python
  7. Управление ресурсами с контекстными менеджерами
  8. Python: отличительная особенность — отступы
  9. Многострочные строки в Python
  10. Тестирование функции сложения
  11. Форматирование даты с strftime()
  12. Создание вложенных циклов for
  13. Импортирование в Python
  14. Структуры данных в Python
  15. Подсчет элементов в Python
  16. Операции с матрицами в Python
  17. Сравнение строк в Python
  18. Таймер обратного отсчета
  19. Объединение коллекций в Python
  20. Капитализация строк
  21. Декоратор для группы пользователей в Django
  22. Создание словарей в Python
  23. Проверка переменных окружения в Python
  24. Метод join для объединения строк
  25. Работа с массивами в Numpy
  26. Форматирование строк в Python
  27. enumerate() в Python для работы с индексами
  28. Оператор in в Python
  29. capitalize() — изменение регистра первого символа строки
  30. Функция eval() в Python
  31. Удаление эмодзи с помощью pandas
  32. Поиск повторов в списке
  33. Объединение, распаковка и деструктуризация
  34. Сортировка элементов с OrderedDict
  35. Генераторы в Python
  36. Работа с пользовательским вводом
  37. Итераторы в Python
  38. Замена символов в строке
  39. Измерение времени выполнения кода с использованием time
  40. Атрибуты класса и экземпляра в Python
  41. Декораторы с @wraps
  42. Функция zip() в Python
  43. Python: динамическая типизация и проверка типов
  44. Использование двоеточия в Python
  45. Извлечение данных из JSON
  46. Преобразование чисел в восьмеричную строку
  47. История Python
  48. Создание Radio кнопок в tkinter

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