Вебинары Разобраться в IT Реферальная программа
Программирование Аналитика Дизайн Маркетинг Управление проектами
27 Май 2024
2 мин
1108

Выполнение команд оболочки и захват вывода в Python

Часто возникают ситуации, когда необходимо выполнить какую-либо команду оболочки и получить ее вывод в виде строки, независимо от того, является ли

Часто возникают ситуации, когда необходимо выполнить какую-либо команду оболочки и получить ее вывод в виде строки, независимо от того, является ли это сообщением об ошибке или успешным выполнением команды. Примером может быть создание базы данных с помощью команды mysqladmin create test -uroot -pmysqladmin12 и получение результатов этой команды в виде строки.

Существует несколько способов решения этой задачи в Python. Один из наиболее простых и распространенных — использование модуля subprocess. Этот модуль позволяет создавать новые процессы, подключаться к их вводу-выводу и возвращать коды возврата.

Вот пример функции, которая принимает команду оболочки в виде строки, выполняет ее и возвращает вывод команды:

import subprocess

def run_command(cmd):
    result = subprocess.run(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE, text=True)
    return result.stdout + result.stderr

В данном примере функция run модуля subprocess используется для выполнения команды. Параметр shell=True указывает, что команда должна быть выполнена через оболочку. Это позволяет использовать все возможности оболочки, такие как перенаправление вывода, использование пайпов и т.д.

Параметры stdout=subprocess.PIPE и stderr=subprocess.PIPE указывают, что стандартный вывод и стандартный вывод ошибок должны быть перенаправлены (т.е., «захвачены»).

Параметр text=True указывает, что вывод должен быть в виде текста, а не в виде байт.

Строка return result.stdout + result.stderr возвращает как стандартный вывод, так и стандартный вывод ошибок.

Таким образом, можно легко выполнить любую команду оболочки и получить ее вывод в виде строки в Python.

Проверь как ты усвоил материалы статьи
Пройди тест и узнай насколько ты лучше других читателей

Добавить комментарий