做某我的项目时,须要获取文件夹大小,磁盘的存储信息。通过学习整顿了下,仅供参考。
获取某个目录的大小
def get_size(path): list1 = [] fileList = os.listdir(path) # 获取path目录下所有文件 for filename in fileList: pathTmp = os.path.join(path,filename) # 获取path与filename组合后的门路 if os.path.isdir(pathTmp): # 判断是否为目录 get_size(pathTmp) # 是目录就持续递归查找 elif os.path.isfile(pathTmp): # 判断是否为文件 filesize = os.path.getsize(pathTmp) # 如果是文件,则获取相应文件的大小 #print('目录中的子文件大小:%d字节' % filesize) list1.append(filesize) # 将文件的大小增加到列表 print('%s 目录中的文件总大小:%d 字节' % (path, sum(list1))) print('%s 目录中的文件总大小: %.4f MB' % (path, (sum(list1)/1024/1024))) print('%s 目录中的文件总大小: %.4f GB' % (path, (sum(list1)/1024/1024/1024))) path = "D:\\image"get_size(path)
获取所有磁盘信息
def get_disk_info(): disk_used = {} for id in psutil.disk_partitions(): if 'cdrom' in id.opts or id.fstype == '': continue disk_name = id.device.split(':') s = disk_name[0] disk_info = psutil.disk_usage(id.device) #print(disk_info) disk_used[s + '盘使用率:'] = '{}%'.format(disk_info.percent) disk_used[s + '残余空间:'] = '{}GB'.format(disk_info.free // 1024 // 1024 // 1024) print("sdsds:%s"%disk_used) get_disk_info()
实例:获取D:\image的大小,而后此文件夹会不停的写入文件,当D盘残余空间小于5GB时,给出正告信息
"""Author:NoamaNelsonDate:2019-11-19Discription:Get the size of D:\\image, and then this folder will keep writing files. When the remaining space of D disk is less than 5GB, a warning message will be given"""import osimport os.pathimport smtplibimport email.mime.multipartimport email.mime.textimport sendmailimport psutilimport collectionsdef get_size(path): list1 = [] fileList = os.listdir(path) # 获取path目录下所有文件 for filename in fileList: pathTmp = os.path.join(path,filename) # 获取path与filename组合后的门路 if os.path.isdir(pathTmp): # 判断是否为目录 get_size(pathTmp) # 是目录就持续递归查找 elif os.path.isfile(pathTmp): # 判断是否为文件 filesize = os.path.getsize(pathTmp) # 如果是文件,则获取相应文件的大小 #print('目录中的子文件大小:%d字节' % filesize) list1.append(filesize) # 将文件的大小增加到列表 print('%s 目录中的文件总大小:%d 字节' % (path, sum(list1))) print('%s 目录中的文件总大小: %.4f MB' % (path, (sum(list1)/1024/1024))) print('%s 目录中的文件总大小: %.4f GB' % (path, (sum(list1)/1024/1024/1024))) return sum(list1) def get_disk_info(): disk_used = {} for id in psutil.disk_partitions(): if 'cdrom' in id.opts or id.fstype == '': continue disk_name = id.device.split(':') s = disk_name[0] disk_info = psutil.disk_usage(id.device) #print(disk_info) disk_used[s + '盘使用率:'] = '{}%'.format(disk_info.percent) disk_used[s + '残余空间:'] = '{}GB'.format(disk_info.free // 1024 // 1024 // 1024) print("sdsds:%s"%disk_used) return disk_usedif __name__ == "__main__": #path= input("请输出门路:").strip() #指定文件门路 path = r"D:\\image" #intlist1 = get_size(path) get_size(path) disk_used1 = get_disk_info() disk_used2 = disk_used1['D残余空间:'] disk_used3 = int(disk_used2.split('G')[0]) #intlist2 = intlist1/1024/1024/1024 if disk_used3 > 5: print("D残余空间:%s"%disk_used1['D残余空间:']) elif disk_used3 <= 5: mtxt = "D盘残余空间为%dGB,倡议进行数据存储"%disk_used3 print(mtxt)