获取某文件夹下所有文件、一级子文件夹的大小

import os
from os.path import getsize,join
input=input('请输入要查询的根目录')
def function(root_dir):
    # 初始化函数
    def StrOfSize(size):
        '''
        auth: wangshengke@kedacom.com ;科达柯大侠
        递归实现,精确为最大单位值 + 小数点后三位
        '''

        def strofsize(integer, remainder, level):
            if integer >= 1024:
                remainder = integer % 1024
                integer //= 1024
                level += 1
                return strofsize(integer, remainder, level)
            else:
                return integer, remainder, level

        units = ['B', 'KB', 'MB', 'GB', 'TB', 'PB']
        integer, remainder, level = strofsize(size, 0, 0)
        if level + 1 > len(units):
            level = -1
        return ('{}.{:>03d} {}'.format(integer, remainder, units[level]))

    def getdirsize(dir):
        size = 0
        for root, dirs, files in os.walk(dir):
            size += sum([getsize(join(root, name)) for name in files])
        return size

    # 初始化数据
    os.chdir(root_dir)
    result_list = []
    files = os.listdir()
    # 开始获取文件、文件夹大小
    sizelist_bytes = map(getdirsize, files)  # 获取大小
    sizelist_result = list(map(StrOfSize, sizelist_bytes))  # 转为其他格式
    # 合并字符串
    for i in range(len(files)):
        result = files[i] + ':' + sizelist_result[i]
        result_list.append(result)
    print(result_list)
function(input)

用到了另外两位程序员分享的函数,一个是StrOfSize()和getdirsize()虽然第一个还不是特别懂,但就先拿来用上了

上一篇:有关数学算法(一)


下一篇:仿射密码的学习