@HiElias

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

Добрый день!
Пытаюсь выполнить linux-команду lsblk и вывести их (stdout). Всё выводится, кроме столбца FSTYPE. Не понимаю почему данные из этого столбца не отображаются.

import sys
import subprocess

f = open('text.txt', 'r')



stdout_file = sys.stdout
stdout_file.write(f.read())

x = 'nvme0n1'

Y = subprocess.run(['lsblk', '-o', 'NAME,FSTYPE,SIZE,TYPE,MOUNTPOINT', '-l'], stdout=subprocess.PIPE, encoding='utf-8').stdout
print(Y)
print(type(Y))


Вывод:
NAME      FSTYPE   SIZE TYPE MOUNTPOINT
nvme0n1          476,9G disk 
nvme0n1p1          512M part 
nvme0n1p2        476,4G part /run/host/share/icons
  • Вопрос задан
  • 217 просмотров
Решения вопроса 1
romesses
@romesses
Backend инженер
Не знаю почему, но не проще ли запустить с ключом -J для получения JSON?!

lsblk -o NAME,FSTYPE,SIZE,TYPE,MOUNTPOINT -l -J
{
   "blockdevices": [
      {"name":"loop0", "fstype":"squashfs", "size":"9.1M", "type":"loop", "mountpoint":"/snap/canonical-livepatch/95"},
      {"name":"loop1", "fstype":"squashfs", "size":"91.3M", "type":"loop", "mountpoint":"/snap/go/7165"},
      {"name":"loop3", "fstype":"squashfs", "size":"99.2M", "type":"loop", "mountpoint":"/snap/core/10859"},
...


Добавлено
Некоторые разделы действительно с fstype null. По-моему, их нужно просто пропускать.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы