python win系统获取磁盘及文件夹大小

获取磁盘信息:已使用空间、总空间大小等,python没有自带的函数,常用的插件:WMI

python中自带的有获取文件夹大小、名称等信息的函数:walk()

使用wmi之前的配置

环境:

win7、win8
python2.7.7
wmi:1.4.9
pywin32:pywin32-218.win-amd64-py2.7.exe

pywin32下载地址:https://sourceforge.net/projects/pywin32/files/pywin32/

注意:要下载和自己系统和所安装python版本相匹配的

因为依赖原因,在安装wmi之前需要先安装pywin32;
完成后拷贝解压后WMI-1.4.9文件夹到安装python的文件夹里面(C:/Python27/WMI-1.4.9)
然后在命令行执行:python */Python27/WMI-1.4.9/setup.py install

实例

getdiskinfo

def get_disk_info():
    """
    :return: get the disk info
    """
    tmplist = []
    c = wmi.WMI()
    for physical_disk in c.Win32_DiskDrive():
        tmpdict ={}
        tmpdict["Caption"] = physical_disk.Caption
        tmpdict["Size"] = int(physical_disk.Size)/1024/1024/1024
        tmplist.append(tmpdict)
    return tmplist

getfsinfo

def get_fs_info():
    """
    :return:get the file system info :contain partition's size ,used,avail ,operating frequency, mount info
    """
    tmplist = []
    c = wmi.WMI()
    for physical_disk in c.Win32_DiskDrive():
        for partition in physical_disk.associators("Win32_DiskDriveToDiskPartition"):
            for logical_disk in partition.associators("Win32_LogicalDiskToPartition"):
                tmpdict = {}
                tmpdict["Caption"] = logical_disk.Caption
                tmpdict["DiskTotal"] = int(logical_disk.Size)/1024/1024/1024
                tmpdict["UseSpace"]=(int(logical_disk.Size)-int(logical_disk.FreeSpace))/1024/1024/1024
                tmpdict["FreeSpace"]=int(logical_disk.FreeSpace)/1024/1024/1024
                tmpdict["Percent"]=int(100.0*(int(logical_disk.Size)-int(logical_disk.FreeSpace))/int(logical_disk.Size))
                tmplist.append(tmpdict)
    return tmplist

文件夹大小

def  fssize(dirpath):

    size = 0
            if os.path.exists(dirpath):
                if os.path.isdir(dirpath):
                    for root, dirs, files in os.walk(dirpath):
                        for name in files:
                            try:
                                size += getsize(join(root, name))
                            except:
                                continue
                        #size += sum([getsize(join(root, name)) for name in files])
                elif os.path.isfile(dirpath):
                    size = os.path.getsize(dirpath)
                else:
                    continue
return size

至于#size += sum([getsize(join(root, name)) for name in files])
在C盘会报错:error[5],没有权限。其他盘则正常工作。

本文出自he ivy 的博客,转载请注明出处:http://blog.csdn.net/heivy/article/details/51658223

参与评论 您还未登录,请先 登录 后发表或查看评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
©️2022 CSDN 皮肤主题:书香水墨 设计师:CSDN官方博客 返回首页

打赏作者

heivy

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值