经典思路题(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出另一个文件夹,依次处理,最后知道所有文件夹全被遍历过,拿到所有文件夹的总大小。
    衣带渐宽终不悔,为伊消得人憔悴!

 
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号