求文件夹大小与删除文件夹:文件夹中有子文件夹与文件,子文件夹中有文件

  求文件夹大小:

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)

——————————

另外一种思路见这篇博客:

python 实现彻底删除文件夹和文件夹下的文件

 
 
posted on 2019-04-16 09:41  江湖乄夜雨  阅读(333)  评论(0编辑  收藏  举报