一、递归方法
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))