Python中如何确保每次按统一规则构建相同结构的目录
重置运行时文件结构的简化实现方案
你当前逐层级删除子目录再删除父目录的写法存在大量冗余,shutil.rmtree本身支持递归删除整个目录树,不需要从最深层目录开始逐个调用删除方法,用Python标准库几行代码就能实现每次运行从零创建干净文件结构的需求。
核心优化点
- 去掉冗余的逐层删除逻辑,直接对根临时目录执行递归删除即可
- 不要用
os.path.exists(xxx) == 1的写法,os.path.exists本身返回布尔值,且完全可以通过API参数省掉单独的存在性判断分支 - 创建多级目录时开启
exist_ok=True参数,目录已存在时不会抛出异常
最简实现代码
import os import shutil from pathlib import Path # 替换为你实际的路径配置 pth_temp_data = Path("your_custom_temp_data_path") pth_temp_presets = pth_temp_data.joinpath("Presets/Factory_Presets/Global_Presets") # 清理旧目录:如果目录存在则递归删除全部内容,不存在则直接跳过 shutil.rmtree(pth_temp_data, ignore_errors=True) # 递归创建所有需要的层级目录,自动补全缺失的父目录 os.makedirs(pth_temp_presets, exist_ok=True)
可选优化(Python 3.8+)
如果你使用3.8及以上版本的Python,可以直接用pathlib.Path自带的mkdir方法替代os.makedirs,写法更统一:
# 等价于os.makedirs的效果 pth_temp_presets.mkdir(parents=True, exist_ok=True)
注意事项
shutil.rmtree的ignore_errors=True参数会静默忽略删除过程中的异常(比如文件被其他进程占用、当前用户无删除权限),如果你需要严格感知删除失败的场景,可以移除该参数,按需添加自定义异常捕获逻辑。- 重要提醒:执行递归删除前建议加路径校验,确认传入
shutil.rmtree的路径是你预设的临时工作目录,避免误删系统文件、个人重要文件。
内容的提问来源于stack exchange,提问作者observantsound
相关产品推荐
相关产品推荐

