求文件夹大小与删除文件夹:文件夹中有子文件夹与文件,子文件夹中有文件
求文件夹大小:
import os BASE_DIR = os.path.dirname(os.path.abspath(__name__)) FILE_PATH = os.path.join(BASE_DIR,'whw2') lis = [FILE_PATH] count = 0 while lis: path = lis.pop() for f in os.listdir(path): sub_path = os.path.join(path,f) if os.path.isdir(sub_path): lis.append(sub_path) elif os.path.isfile(sub_path): count += os.path.getsize(sub_path) print(count)
删除文件夹大体的思路就是:先删除里面所有的文件,接着从里往外依次删除剩余的空文件夹,至于最后的“根文件夹”根据需求选择是否删除。
利用堆栈的思想实现:
# -*- coding:utf-8 -*- import os def del_dir(filepath): lis = [filepath] lst = [] while lis: path = lis.pop() for f in os.listdir(path): sub_path = os.path.join(path,f) if os.path.isfile(sub_path): os.remove(sub_path) elif os.path.isdir(sub_path): lis.append(sub_path) lst.append(sub_path) # 把所有文件删完后,再处理里面的空文件夹 # 注意这里 倒序 取!从里往外删 for f in lst[::-1]: os.rmdir(f) # 最后再把最外面的目录删掉 —— 整个目录就没得了 os.rmdir(filepath)
——————————
另外一种思路见这篇博客: