经典思路题(3)堆栈实现文件夹大小计算

堆栈计算文件大小

import os
path = r'D:\PyCharmProject'

list_path = [path]
fsize = 0
while list_path:
    path = list_path.pop()
    lst = os.listdir(path)
    for i in lst:
        abs_path = os.path.join(path,os.path.basename(i))
        if os.path.isdir(abs_path):
            list_path.append(abs_path)
        else:
            fsize += os.path.getsize(abs_path)
print(fsize)
堆栈实现计算文件大小

思路:

  第一层循环是将第一层路径放入列表,然后将列表的最后一个路径pop出来,遍历这个路径做判断,如果子路径是文件,通过getsize方法计算大小并累加,如果是文件夹,将文件夹的路径加入列表,第一层遍历完获得的结果是所有文件的大小总和,以及所有是文件夹的路径并加入列表。并将第一层路径删除,这个时候第一层路径被处理完。

  进入第二层循环,又遇到一个pop方法,取出第二层路径下的一个文件夹,通过相同的方法遍历里面的所有文件夹,计算文件的大小,将文件夹加入列表,然后从列表删除这个路径,一层接一层,直到这个文件夹被处理完。处理玩这个文件夹,调出循环,然后pop出另一个文件夹,依次处理,最后知道所有文件夹全被遍历过,拿到所有文件夹的总大小。

posted @ 2019-03-26 20:27  ryxiong728  阅读(126)  评论(0)    收藏  举报