Python3如何删除指定目录下除特定文件夹外的所有内容
实现方案
原代码问题说明
你的现有代码存在几个核心逻辑错误:
- 路径中冗余的
./会导致识别混乱,且硬编码路径不符合函数封装逻辑 os.remove仅支持删除文件,遇到子文件夹会直接抛出异常- 遍历到ksg目录后直接删除D目录下所有内容,会把需要保留的ksg也一并删除
os.rmdir仅能删除空文件夹,非空目录会直接删除失败
正确可运行代码
import shutil from pathlib import Path def delete_except_ksg(root_path): root_dir = Path(root_path) # 定义需要保留的ksg目录路径 keep_dir = root_dir / "ksg" # 前置校验:避免ksg不存在时误删全部内容 if not keep_dir.exists() or not keep_dir.is_dir(): print(f"目标保留目录{keep_dir}不存在,操作终止") return # 遍历D目录下所有一级子文件/子文件夹 for item in root_dir.iterdir(): # 跳过要保留的ksg目录 if item == keep_dir: continue # 删除文件/软链接 if item.is_file() or item.is_symlink(): item.unlink() # 递归删除非保留的文件夹 elif item.is_dir(): shutil.rmtree(item) print(f"{root_path} 下除ksg外的所有内容已删除完成") # 调用执行 delete_except_ksg("./Desktop/D")
注意事项
- 首次运行前建议先备份D目录下的内容,避免误删
- 代码不会修改ksg目录内部的任何文件,仅删除同级其他内容
- ksg目录不存在时会自动终止操作,不会清空整个D目录
内容的提问来源于stack exchange,提问作者Anjelo Maerte
相关产品推荐
相关产品推荐

