Skip to content

Instantly share code, notes, and snippets.

@mujeebishaque
Created November 7, 2023 14:06
Show Gist options
  • Save mujeebishaque/e81b1d31864cd04bc487b64868106061 to your computer and use it in GitHub Desktop.
Save mujeebishaque/e81b1d31864cd04bc487b64868106061 to your computer and use it in GitHub Desktop.
calculate disk space in GBs using python psutils
import psutil
UNITS = {1000: ['KB', 'MB', 'GB']}
class DiskInfo:
def __init__(self) -> None:
self.disk_info = {}
self.total_disk_size = 0
self.free_disk_size = 0
self.used_disk_size = 0
# call the disk_space_GBs() method so it can assign values to the above properties
self.disk_space_GBs()
def approximate_size(self, size):
mult = 1000
for unit in UNITS[mult]:
size = size / mult
if size < mult:
return '{0:.3f} {1}'.format(size, unit)
@property
def total_disk_size(self):
return self.total_disk_size
@property
def free_disk_size(self):
return self.free_disk_size
@property
def used_disk_size(self):
return self.used_disk_size
def disk_space_GBs(self):
disk_info = self.complete_disk_info()
total_disk_size = sum(disk_info[key]['total_space'] for key in disk_info.keys())
free_disk_size = sum(disk_info[key]['free_space'] for key in disk_info.keys())
used_disk_size = sum(disk_info[key]['used_space'] for key in disk_info.keys())
self.total_disk_size = self.approximate_size(total_disk_size)
self.free_disk_size = self.approximate_size(free_disk_size)
self.used_disk_size = self.approximate_size(used_disk_size)
def complete_disk_info(self):
for index, disk in enumerate(psutil.disk_partitions()):
device = disk.device
mount_point = disk.mountpoint
total_space = psutil.disk_usage(mount_point).total
used_space = psutil.disk_usage(mount_point).used
free_space = psutil.disk_usage(mount_point).free
percent_used = psutil.disk_usage(mount_point).percent # example of % is percent=22.5
self.disk_info[index] = {'device': device, 'mount_point': mount_point, 'total_space': total_space, 'used_space': used_space, 'free_space': free_space, 'percent_used': percent_used}
return self.disk_info
if __name__ == '__main__':
d = DiskInfo()
d.complete_disk_info()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment