初学者,仅供学习交流
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个扇区。显然,簇是操作系统所使用的逻辑概念,而非磁盘的物理特性。 为了更好地管理磁盘空间和更高效地从硬盘读取数据,操作系统规定一个簇中只能放置一个文件的内容,因此文件所占用的空间,只能是簇的整数倍;而如果文件实际大小小于一簇,它也要占一簇的空间。所以,一般情况下文件所占空间要略大于文件的实际大小,只有在少数情况下,即文件的实际大小恰好是簇的整数倍时,文件的实际大小才会与所占空间完全一致。