Курс 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. Работа с комплексными числами
  4. Разбиение текста в Python
  5. Основы Python
  6. Функция zip() в Python
  7. Обработка исключений в Python
  8. Функция map() в Python
  9. Именование переменных в Python
  10. Асинхронное выполнение задач в процессах
  11. Открытие, чтение и закрытие файла
  12. Гибкие функции Python
  13. Метаклассы в Python
  14. Управление ресурсами с контекстными менеджерами
  15. Поиск индекса элемента
  16. Метод __imod__ для Python
  17. Функции в одну строку
  18. Перевод двоичного кода в целое число
  19. Итерация по коллекции в Python
  20. Создание лямбда-функций
  21. Аннотации типов в Python
  22. Структурирование именованных констант
  23. PUT запрос для обновления данных
  24. Синхронизация потоков с time.sleep()
  25. Возврат нескольких значений
  26. Использование type hints
  27. Работа с базами данных SQLite
  28. Аргументы *args и **kwargs
  29. Работа с рекламными данными в Pandas
  30. Метод rename() для переименования файлов и каталогов
  31. Ограничение ресурсов в Python
  32. Перезапуск ячейки в Jupyter Notebook с dostoevsky
  33. Запуск внешнего кода в Jupyter
  34. Управление виртуальными средами в Python
  35. Повторение элементов в Python
  36. Считывание бинарного файла в Python
  37. Создание новой даты в Python
  38. Печать комбинаций в Python с Itertools
  39. Лямбда-функции для min/max
  40. Numpy: разбиение массивов
  41. Функция divmod() в Python
  42. Резервирование символов в Python
  43. Генерация тестовых данных с factory_boy
  44. Ускорение кода с помощью векторизации
  45. Разделение строки с помощью re.split()
  46. Объединение списков в строку

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