#!/usr/bin/env python3 # -*- coding: utf-8 -*- # @Author: KevinMidboe # @Date: 2017-01-28 10:54:06 # @Last Modified by: KevinMidboe # @Last Modified time: 2017-01-31 22:29:43 # f_avail = free blocks avail to non sudo # frsize = fundamental file sys byte size # f_blocks = total number of blocks in the filesystem from os import statvfs from re import sub def sizeof(num, suffix='B'): for unit in ['','K','M','G','T','P','E','Z']: if abs(num) < 1024.0: return "%3.1f%s%s" % (num, unit, suffix) num /= 1024.0 return "%.1f%s%s" % (num, 'Y', suffix) # diskUsage uses statvfs to calculate disk size and availability for given disk def diskUsage(optionalPath=None): path = '/' if optionalPath != None: path += sub('\+', '/', optionalPath) try: s = statvfs(path) byteLeft = s.f_bavail * s.f_frsize byteTotal = s.f_blocks * s.f_frsize byteUsed = byteTotal-byteLeft return { 'left':sizeof(byteLeft), 'used':sizeof(byteUsed), 'total':sizeof(byteTotal) } except FileNotFoundError: return None except TypeError: return None if __name__=="__main__": n = diskUsage('/media/hdd1') print(n)