Мне нужно преобразовать вывод команды df
в формат словаря python.
Filesystem 1K-blocks Used Available Use% Mounted on
udev 1987884 0 1987884 0% /dev
tmpfs 402060 1992 400068 1% /run
tmpfs 402060 1992 400068 1% /run
/dev/sda6 113960124 37751712 70376476 35% /
Мой требуемый формат:
[{'Filesystem':udev, 'Used':0, 'Available':1987884 ,'Use%':0%, 'Mounted_On':'/dev'},{'Filesystem':udev, 'Used':0, 'Available':1987884 ,'Use%':0%, 'Mounted_On':'/dev'}]
Я пытался реализовать это:
path='df -h'
p = Popen(path, shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT)
output = p.stdout.read().decode() # from bytes to str
header, data, _*= output.split('\n') # split to lines
header = header.replace('Mounted on', 'Mounted_on') # fix a two word field
df = dict(list(zip(header.split(), data.split()))) # split to fields and combine
return df
Но он возвращает только первую строку:
{'Filesystem': 'udev', 'Size': '1.9G', 'Used': '0', 'Avail': '1.9G', 'Use%': '0%', 'Mounted_on': '/dev'}
Могу я узнать, какой код отсутствует. Думаю, в этом есть какие-то логические ошибки.