2022年 11月 5日

Python计算文件大小

#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
#------------------------------------------------------------------------------
# file: 统计文件大小.py
# Date: 2019/11/19
#------------------------------------------------------------------------------
"""




import os


def formatsize(bytes):
    try:
        bytes = float(bytes)  # 默认字节
        kb = bytes / 1024  # 换算KB
    except:
        print("字节格式有误")
        return "Error"


    if kb >= 1024:
        M = kb / 1024  # KB换成M
        if M >= 1024:
            G = M / 1024
            return "%fG" % G
        else:
            return "%fM" % M
    else:
        return "%fkb" % kb


# 获取文件大小
def Getfile(path):
    try:
        size = os.path.getsize(path)
        return formatsize(size)
    except:
        print("获取文件大小错误")


# 获取目录总大小
def Getdir(filepath):  # 定义函数
    sum = 0  # 初始化文件大小
    try:
        filename = os.walk(filepath)  # 获取文件夹目录
        for root, dirs, files in filename:  # 循环遍历文件夹目录下的文件
            for fle in files:
                filesdirs = os.path.join(root, fle)  # 必须要这一步,不然获取的文件没有找到路径.
                filesize = os.path.getsize(filesdirs)  # 统计循环出来的文件大小
                sum += filesize   # 所有文件加起来总和
        return formatsize(sum)  # 调用上面formatsize的算法.
    except:
        print("获取文件夹大小错误")


if __name__ == "__main__":
    print("文件大小:" + Getfile("D:\电影\[电影天堂-www.dy2018.net].夺宝联盟.720p.BD中文字幕.rmvb"))
    print("目录大小: " + Getdir("D:\电影"))
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 53
  • 54
  • 55
  • 56
  • 57
  • 58
  • 59
  • 60
  • 61
  • 62