利用os模块求一个文件夹的大小。

一、递归方法

 1 def size(path):  #给定一个初始的文件夹路径
 2     num = 0     
 3     list_name = os.listdir(path)  #利用os模块方法,以列表的形式获得该文件夹下面的所有文件或者文件夹名称
 4     for i in list_name:
 5         file_name = os.path.join(path,i)  #循环的i是文件或者文件夹的名称,需要拼接出绝对路径
 6         if os.path.isdir(file_name):      #判断该路径是否为文件夹
 7             num1 = size(file_name)      #***此处一定要用一个变量来接收递归函数的返回值
 8             num += num1
 9         else:
10             num += os.path.getsize(file_name)    #计算文件的大小
11     return num
12 print(size("F:\pythonhomework"))

二、循环、堆栈思想

 1 def func(lst):  #先将文件夹的路径以列表的形式传人函数
 2     size = 0
 3     while lst:  #列表只要不为空就执行循环
 4         path = lst.pop()   #将列表中最后一个路径取出来
 5         list_name = os.listdir(path)
 6         for i in list_name:
 7             path_name = os.path.join(path,i)
 8             if os.path.isdir(path_name):
 9                 lst.append(path_name)  #***如果是文件夹就将该路径加到列表中
10             else:
11                 size += os.path.getsize(path_name)
12     return size
13 lst = ["F:\pythonhomework"]
14 print(func(lst))

 

posted @ 2018-08-21 21:45  被嫌弃的胖子  阅读(486)  评论(0编辑  收藏  举报