Python获取磁盘、文件夹大小信息(一)

举报
虫无涯 发表于 2023/01/12 13:35:12 2023/01/12
【摘要】 做某项目时,需要获取文件夹大小,磁盘的存储信息。通过学习整理了下,仅供参考。 获取某个目录的大小def get_size(path): list1 = [] fileList = os.listdir(path) # 获取path目录下所有文件 for filename in fileList: pathTmp = os.path.join(path,fil...

做某项目时,需要获取文件夹大小,磁盘的存储信息。通过学习整理了下,仅供参考。

获取某个目录的大小

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:NoamaNelson
Date:2019-11-19
Discription: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 os
import os.path
import smtplib
import email.mime.multipart
import email.mime.text
import sendmail
import psutil
import collections


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)))
    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_used

if __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)
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。