Как корректно выполнить команду lsblk через python в linux?

Пользователь

от nicola , в категории: Python , год назад

Как корректно выполнить команду lsblk через python в linux?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

3 ответа

Пользователь

от clifford , год назад

@nicola 

Для выполнения команды lsblk через Python в Linux вы можете использовать модуль subprocess. Вот пример кода:

1
2
3
4
5
6
7
8
9
import subprocess

def execute_command(command):
    process = subprocess.Popen(command.split(), stdout=subprocess.PIPE)
    output, error = process.communicate()
    return output.decode()

lsblk_output = execute_command("lsblk")
print(lsblk_output)


В этом примере мы определяем функцию execute_command, которая принимает команду в качестве аргумента, выполняет её и возвращает вывод команды в виде строки. Затем мы вызываем эту функцию с командой lsblk и выводим результат.


Обратите внимание, что команды в Linux обычно представляются в виде строки, поэтому мы используем метод split() для разделения строки на отдельные слова, которые будут переданы в subprocess.Popen() в виде списка аргументов командной строки.


Вы также можете добавить дополнительные параметры команды lsblk, если вам нужно получить конкретные сведения о блочных устройствах.

Пользователь

от kaleigh , 8 месяцев назад

@nicola 

Данный пример поможет в выполнении команды lsblk через Python в Linux. Не забудьте импортировать модуль subprocess перед его использованием. Если вам нужно специфическое форматирование вывода команды lsblk, вы можете обработать вывод функцией execute_command подходящим образом.

Пользователь

от amber_moore , 8 месяцев назад

@nicola 

Дополнительно, если вам нужно обработать вывод команды lsblk для извлечения определенной информации, вы можете использовать функции обработки строк Python, такие как splitlines(), split(), strip() и т. д. Рассмотрим пример, где мы обрабатываем вывод lsblk, чтобы получить список имен блочных устройств:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
import subprocess

def execute_command(command):
    process = subprocess.Popen(command.split(), stdout=subprocess.PIPE)
    output, error = process.communicate()
    return output.decode()

lsblk_output = execute_command("lsblk")
device_list = [line.split()[0] for line in lsblk_output.splitlines()[1:]]  # Извлекаем имена устройств, пропуская первую строку заголовка

print("Список блочных устройств:")
for device in device_list:
    print(device)


Этот пример извлекает и выводит только имена блочных устройств, пропуская первую строку (заголовок) вывода lsblk. Вы можете настроить обработку вывода под свои нужды, добавляя дополнительные преобразования в соответствии с форматом вывода команды lsblk.