欢迎来到Louis的博客

人生三从境界:昨夜西风凋碧树,独上高楼,望尽天涯路。 衣带渐宽终不悔,为伊消得人憔悴。 众里寻他千百度,蓦然回首,那人却在灯火阑珊处。
扩大
缩小

python获取指定路径中所有文件的大小的和

import os

def get_size(path):
    size = 0
    info = [os.path.join(path, i) for i in os.listdir(path)] #将所有的文件路径都拼接成绝对路径
    for i in info:
        if os.path.isfile(i):
            size += os.path.getsize(i)              #循环判断是否是文件,是文件就获取size进行累加
        else:
            size += get_size(i)                     #是目录的话,进行递归
    else:
        return size                                 #这里的return在最内层的递归函数(path路径中没有目录了)中是返回目录下的所有文件的size的和,
        # 将结果返回给上次函数再进行size+=的累加操作,这样循环到最外层的函数,就是得到了所有文件的size




def get_size2(path):
    lst = [path]
    size = 0
    while lst:                  #使用了堆栈的思想,
        path = lst.pop()
        info = [os.path.join(path, i) for i in os.listdir(path)]
        for j in info:
            if os.path.isdir(j):        #将子目录添加到lst的列表,下次循环就处理子目录
                lst.append(j)
            else:
                size += os.path.getsize(j)

    return size

 

posted on 2018-08-21 13:32  Louiszj  阅读(864)  评论(0编辑  收藏  举报

导航