说明
使用os模块操作文件以及目录路径,定义一个统计指定文件夹大小的函数,(返回文件夹大小【非占用空间】)单位:字节(B)
提示:
os.path.getsize(file) #获取文件大小
注意:
直接获取文件夹的大小,会返回一个1024B的倍数【我们需要获取文件夹的实际大小,1字节 =1B】 测试一个文件夹的大小,而不是文件
程序代码
import os
def dir_size(dir):
size = 0
if os.path.isfile(dir):
size += os.path.getsize(dir)
if os.path.isdir(dir):
dir_lst = os.listdir(dir)
for i in dir_lst:
file = os.path.join(dir, i)
if os.path.isfile(file):
size += os.path.getsize(file)
if os.path.isdir(file):
size += dir_size(file)
return size
def format_size(size):
formatbyte = [(1024 ** 3, "GB"), (1024 ** 2, "MB"), (1024, "KB")]
for (scale, lable) in formatbyte:
if size >= scale:
byte = "%.2f" % (size / scale)
byte[:-3] if byte.endswith('.00') else byte
return "文件大小: {1} {2}({0:,} 字节)".format(size, str(byte), lable)
elif size == 0:
return "文件大小: 0 字节"
else:
pass
return "文件大小: {0} 字节({0:,} 字节)".format(size)
if __name__ == '__main__':
while True:
print("===================")
print(" 1、统计指定目录大小")
print(" 0、退出程序")
print("===================")
flag = int(input("请输入操作编号:"))
if flag == 1:
dirname = input("请输入指定文件目录: ")
if os.path.exists(dirname):
print(format_size(dir_size(dirname)))
else:
print("目录不存在,请检查后重新输入!!")
elif flag == 0:
exit(1)
else:
print("请输入正确的操作编号!!")
输出结果 对照
|