Python统计指定目录的大小(拉勾教育数据分析实战训练营学习笔记)

说明

使用os模块操作文件以及目录路径,定义一个统计指定文件夹大小的函数,(返回文件夹大小【非占用空间】)单位:字节(B)

提示:

os.path.getsize(file) #获取文件大小

注意:

直接获取文件夹的大小,会返回一个1024B的倍数【我们需要获取文件夹的实际大小,1字节 =1B】
测试一个文件夹的大小,而不是文件

程序代码

import os

# 定义统计指定文目录大小的函数
# 可使用 os.stat().st_size 替换 os.path.getsize()
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("请输入正确的操作编号!!")

输出结果
在这里插入图片描述
对照
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值