-
Notifications
You must be signed in to change notification settings - Fork 4
/
all_disk_info.py
65 lines (52 loc) · 1.81 KB
/
all_disk_info.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
from psutil import disk_partitions, disk_usage
from tabulate import tabulate
"""
Script return DataFrame of the information about all disk in your pc
"""
def convert_bytes_gb(bytes_: int) -> int:
"""
Function convert bytes to gb
"""
return round(float(bytes_) / (1024 ** 3))
class DiskInfo:
"""
Class collects information about Disk
"""
def __init__(self):
self.data = disk_partitions(all=False)
def details(self, device_name: str) -> tuple:
for i in self.data:
if i.device == device_name:
return i
@property
def get_device_names(self) -> list:
return [i.device for i in self.data]
def disk_info(self, device_name: str) -> str:
disk_info = {}
try:
usage = disk_usage(device_name)
disk_info["Device"] = device_name
disk_info["Size"] = f"{convert_bytes_gb(usage.used + usage.free)} GB"
disk_info["Used"] = f"{convert_bytes_gb(usage.used)} GB"
disk_info["Free"] = f"{convert_bytes_gb(usage.free)} GB"
disk_info["Usage"] = f"{usage.percent} %"
except PermissionError:
pass
except FileNotFoundError:
pass
info = self.details(device_name)
disk_info.update({"Device": info.device})
disk_info["Mount Point"] = info.mountpoint
disk_info["FS-Type"] = info.fstype
disk_info["Opts"] = info.opts
return disk_info
@property
def all_disk_info(self) -> list:
return_ = []
for i in self.get_device_names:
return_.append(self.disk_info(i))
return return_
if __name__ == "__main__":
info = DiskInfo().all_disk_info
_list = [i.values() for i in info]
print(tabulate(_list, headers=info[0].keys(), tablefmt="simple", missingval="-"))