mirror of
https://github.com/peter-tanner/disk-usage.git
synced 2024-11-30 09:00:22 +08:00
53 lines
1.5 KiB
Python
53 lines
1.5 KiB
Python
|
import shutil
|
||
|
from datetime import datetime, date, timedelta
|
||
|
from utils import nextWeek
|
||
|
import os
|
||
|
|
||
|
class Drive:
|
||
|
def __init__(self, drivePath) -> None:
|
||
|
self.__drivePath = drivePath
|
||
|
try:
|
||
|
self.total, self.used, self.free = shutil.disk_usage(self.__drivePath)
|
||
|
except:
|
||
|
self.total = self.used = self.free = ""
|
||
|
pass
|
||
|
|
||
|
def toKV_used(self):
|
||
|
return {self.__drivePath : self.used}
|
||
|
def toKV_total(self):
|
||
|
return {self.__drivePath : self.total}
|
||
|
def toKV_free(self):
|
||
|
return {self.__drivePath : self.free}
|
||
|
|
||
|
@staticmethod
|
||
|
def getDrives(mountPath):
|
||
|
drives = []
|
||
|
for drive in os.listdir(mountPath):
|
||
|
path = Drive.__normalizeDirPath(mountPath+drive)
|
||
|
drives.append(Drive(path))
|
||
|
return drives
|
||
|
|
||
|
@staticmethod
|
||
|
def getUsed(mountPath):
|
||
|
__now = datetime.now().isoformat(sep="_")
|
||
|
row = {
|
||
|
"time" : __now,
|
||
|
"next_week" : nextWeek().isoformat()
|
||
|
}
|
||
|
for drive in Drive.getDrives(mountPath):
|
||
|
row.update(drive.toKV_used())
|
||
|
return row
|
||
|
|
||
|
@staticmethod
|
||
|
def getMaxTotal(mountPath):
|
||
|
drives = Drive.getDrives(mountPath)
|
||
|
return max(drives, key = lambda d : d.total).total
|
||
|
|
||
|
|
||
|
@staticmethod
|
||
|
def __normalizeDirPath(dirPath):
|
||
|
if dirPath[-1] == '/':
|
||
|
return dirPath
|
||
|
return dirPath+'/'
|
||
|
|