python获取文件下的所有文件、文件夹的大小

import os

allFilePath = []  # 存放所有的文件路径
dirSize = 0  # 文件夹大小  单位:字节


# 获取文件夹下的所有文件
def getAllFilePath(path):
    '''
    这个思路可以延伸做一个文件查找器:把所有文件、文件夹添加进数组  然后 in 数组 可以反馈搜索结果
    '''
    # 文件夹结尾判断有没有'/'
    if path[-1].__eq__('/'):
        pass
    else:
        path = path + '/'
    global allFilePath  # 全局变量
    fileList = os.listdir(path)  # 获得文件夹下面的所有内容
    for i in fileList:
        if os.path.isdir(path + i):  # 如果是文件夹  那就再次调用函数去递归
            getAllFilePath(path + i)  # 调用自己
        else:
            '''
            如果你只想获得某类文件  比如'.xml'结尾的文件  可以用正则表达式  demo如下
            '.' 匹配除换行符 \n 之外的任何单字符
            '+' 至少出现一次  
            '\.' 转义.  因为.在正则表达式中是关键字  所以需要转义 
            '$' 以什么结尾('^' 以什么开头)
            
            if re.match('.+\.xml$', i):
                allFilePath.append(path + i)
            '''
            allFilePath.append(path + i)  # 把文件的名字加入数组


# 获取文件夹的大小
def getDirSize(path):
    # 文件夹结尾判断有没有'/'
    if path[-1].__eq__('/'):
        pass
    else:
        path = path + '/'
    global dirSize  # 全局变量
    fileList = os.listdir(path)  # 获得文件夹下面的所有内容
    for i in fileList:
        if os.path.isdir(path + i):  # 如果是文件夹  那就再次调用函数去递归
            getDirSize(path + i)  # 调用自己
        else:
            size = os.path.getsize(path + i)  # 获取文件的大小
            dirSize = dirSize + size  # 叠加


if __name__ == '__main__':
    getAllFilePath('/Users/apple/Downloads/Video')
    print(allFilePath)
    getDirSize('/Users/apple/Downloads/Video')
    print(str(int(dirSize / 1048576)) + ' MB')

猜你喜欢

转载自blog.csdn.net/Mr_Qian_Ives/article/details/108200134