Python Subprocess – выполнение внешних команд в Python
Команда subprocess в языке программирования Python предоставляет возможность запускать внешние процессы из Python-скрипта. Она предоставляет гибкий и мощный способ взаимодействия с командной строкой операционной системы.
Основная функция, которая используется для выполнения команд в подпроцессе, называется subprocess.run(). Давайте рассмотрим некоторые примеры использования.
Пример 1: Запуск простой команды
import subprocess
result = subprocess.run(["ls", "-l"], capture_output=True, text=True)
print(result.stdout)
В данном примере мы используем команду ls -l для вывода содержимого текущей директории в формате списка. Результат выполнения команды сохраняется в переменную result. Мы используем аргументы capture_output=True и text=True, чтобы перехватить вывод команды и получить его в текстовом формате. Затем мы выводим результат на экран с помощью print(result.stdout).
Пример 2: Передача аргументов в команду
import subprocess
name = "John"
age = 25
result = subprocess.run(["python3", "script.py", name, str(age)], capture_output=True, text=True)
print(result.stdout)
В этом примере мы передаем аргументы name и age в скрипт script.py, который запускается с помощью команды python3. Мы используем str(age) для преобразования переменной age в строку, поскольку аргументы должны быть переданы в виде строк.
Пример 3: Обработка ошибок
import subprocess
try:
result = subprocess.run(["command_does_not_exist"], capture_output=True, text=True)
print(result.stdout)
except subprocess.CalledProcessError as e:
print("Ошибка выполнения команды:", e)
В этом примере мы пытаемся выполнить команду command_does_not_exist, которая, очевидно, не существует. Ожидается, что возникнет ошибка CalledProcessError. В блоке except мы ловим эту ошибку и выводим сообщение об ошибке.
Пример 4: Получение кода возврата
import subprocess
result = subprocess.run(["ls"], capture_output=True, text=True)
exit_code = result.returncode
print(exit_code)
В данном примере мы выполняем команду ls и сохраняем код возврата в переменную exit_code. Код возврата равен 0, если команда выполнена успешно, и отличен от нуля в случае ошибки.
Это только некоторые примеры использования модуля subprocess в Python. Он имеет множество возможностей и функций, которые позволяют вам контролировать взаимодействие с внешними процессами.