2015-05-22 6 views
0

Когда я печатаю следующую информацию, он выглядит действительно уродливым. Текстовый дисплей очень длинный, и вы не можете его прочитать.Формат вывода на Python

Код:

import psutil 
print("Disk: ", psutil.disk_partitions()) 

Выход я получаю:

Disk: [sdiskpart(device='C:\\', mountpoint='C:\\', fstype='NTFS', opts='rw,fixed'), sdiskpart(device='D:\\', mountpoint='D:\\', fstype='', opts='cdrom'), sdiskpart(device='E:\\', mountpoint='E:\\', fstype='', opts='cdrom'), sdiskpart(device='F:\\', mountpoint='F:\\', fstype='NTFS', opts='rw,fixed'), sdiskpart(device='H:\\', mountpoint='H:\\', fstype='NTFS', opts='rw,removable')] 

В одной длинной линии! Есть ли способ фильтровать выход или отображать его на нескольких строках?

Спасибо за помощь мне :)

+7

[pprint] (https://docs.python.org/3/library/pprint.html) является вашим другом. – miku

ответ

1

psutil.disk_partitinos() дает список разделов на вашем systme.

Каждый элемент в этом списке является экземпляром sdiskpart который является namedtuple со следующими свойствами:

['count', 'device', 'fstype', 'index', 'mountpoint', 'opts'] 

Вы должны процесс этот список и формат и отображать его так, как вы хотите с помощью str.format() и print().

См. Документацию psutil.

Простая функция, которая отображает "информацию о диске" в "лучший способ" может быть что-то же просто, как:

Пример:

from psutil import disk_partitions 


def diskinfo(): 
    for i, disk in enumerate(disk_partitions()): 
     print "Disk #{0:d} {1:s}".format(i, disk.device) 
     print " Mount Point: {0:s}".format(disk.mountpoint) 
     print " File System: {0:s}".format(disk.fstype) 
     print " Options: {0:s}".format(disk.opts) 


diskinfo() 

Выход:

bash-4.3# python /app/foo.py 
Disk #0 /dev/mapper/docker-8:1-2762733-bdb0f27645efd726d69c77d0cd856d6218da5783b2879d9a83a797f8b896b4be 
Mount Point:/
File System: ext4 
Options: rw,relatime,discard,stripe=16,data=ordered 
1

Вы можете сделать что-то вроде этого:

print("Disks:") 
for disk in psutil.disk_partitions()): 
    print(disk) 

Это должно выглядеть следующим образом:

Disks: 
sdiskpart(device='C:\\', mountpoint='C:\\', fstype='NTFS', opts='rw,fixed') 
sdiskpart(device='D:\\', mountpoint='D:\\', fstype='', opts='cdrom') 
sdiskpart(device='E:\\', mountpoint='E:\\', fstype='', opts='cdrom') 
sdiskpart(device='F:\\', mountpoint='F:\\', fstype='NTFS', opts='rw,fixed') 
sdiskpart(device='H:\\', mountpoint='H:\\', fstype='NTFS', opts='rw,removable') 
+0

Спасибо, что помогли мне! – tartaarsap

Смежные вопросы