Python定义统计指定目录大小的函数(含子目录)

初学者,仅供学习交流

1.定义统计指定目录大小的函数

代码如下:

import os

def dir_size(d):
    '''
    定义计算指定目录大小的函数
    '''
    sum = 0
    #判断指定目录是否为文件
    if os.path.isfile(d):
        sum+=os.path.getsize(d)
    #判断指定目录是否为文件夹
    if os.path.isdir(d):
        dir_list = os.listdir(d)    
        for f in dir_list:
            file = os.path.join(d,f)
            if os.path.isfile(file):
                sum+=os.path.getsize(file)
            if os.path.isdir(file):
                sum+=dir_size(file)#递归统计
    return sum

while True:
    key_word = input("请输入指定文件目录的文件夹或文件(例:D:\\Python或D:\\Python\\1.py),直接回车即退出:\n")
    if key_word == "":
        break
    else:
        print("{}字节".format(dir_size(key_word)))

2.运行结果

这里写图片描述
这里写图片描述
这里写图片描述

小常识:为什么文件属性里文件大小和所占用空间不一致?

文件系统是操作系统与驱动器之间的接口,当操作系统请求从硬盘里读取一个文件时,会请求相应的文件系统(FAT 16/32/NTFS)打开文件。扇区是磁盘最小的物理存储单元,但由于操作系统无法对数目众多的扇区进行寻址,所以操作系统就将相邻的扇区组合在一起,形成一个簇,然后再对簇进行管理。每个簇可以包括2、4、8、16、32或64个扇区。显然,簇是操作系统所使用的逻辑概念,而非磁盘的物理特性。 为了更好地管理磁盘空间和更高效地从硬盘读取数据,操作系统规定一个簇中只能放置一个文件的内容,因此文件所占用的空间,只能是簇的整数倍;而如果文件实际大小小于一簇,它也要占一簇的空间。所以,一般情况下文件所占空间要略大于文件的实际大小,只有在少数情况下,即文件的实际大小恰好是簇的整数倍时,文件的实际大小才会与所占空间完全一致。

欢迎大家提出改进意见

猜你喜欢

转载自blog.csdn.net/momobaba2018/article/details/82225972