Python如何实现批量清空多个指定文件夹内的文件
VDI多目录批量清理脚本实现
完全可以通过封装函数+路径列表的方式实现多文件夹一次性清空,以下是可直接复用的优化版本,同时修正了原有代码的逻辑问题。
原有代码的问题
os.remove()删除成功时返回None,失败会直接抛出异常,原有返回值判断逻辑写反,遇到文件被占用、权限不足的情况会直接中断整个脚本- 原有逻辑只删除文件,会残留大量空文件夹,达不到完全清空目录的效果
优化后可直接使用的代码
import os import shutil def clear_single_folder(target_path: str) -> None: """清空单个目标文件夹下的所有内容,保留根目录本身""" # 校验路径有效性 if not os.path.isdir(target_path): print(f"[跳过] 路径无效/不存在:{target_path}") return # 自底向上遍历目录,方便后续删除空文件夹 for root, dirs, files in os.walk(target_path, topdown=False): # 先删除所有文件 for file in files: file_full_path = os.path.join(root, file) try: os.remove(file_full_path) print(f"[删除成功] {file_full_path}") except PermissionError: print(f"[删除失败] {file_full_path}:权限不足或文件被占用") except Exception as e: print(f"[删除失败] {file_full_path}:{str(e)}") # 不需要删除空文件夹的话,把下面这段代码注释掉即可 for dir_name in dirs: dir_full_path = os.path.join(root, dir_name) try: shutil.rmtree(dir_full_path) print(f"[删除子目录成功] {dir_full_path}") except Exception as e: print(f"[删除子目录失败] {dir_full_path}:{str(e)}") if __name__ == "__main__": # 所有需要清空的目录统一放在这个列表里维护,新增路径直接按格式追加即可 CLEAN_PATH_LIST = [ r"C:\Users\jwals\test test", # 日常VDI清理常用路径示例,按需取消注释或者新增自己的路径即可 # r"C:\Users\%username%\AppData\Local\Temp", # r"C:\Windows\Temp", # r"D:\VDI\UserCache", # r"C:\Users\%username%\Downloads", ] print("===== 批量目录清理任务启动 =====") for path in CLEAN_PATH_LIST: # 自动解析路径里的环境变量(比如%username%) parsed_path = os.path.expandvars(path) print(f"\n正在处理目录:{parsed_path}") clear_single_folder(parsed_path) print("\n===== 所有清理任务执行完毕 =====")
使用说明
- 日常新增/调整待清理目录,只需要修改
CLEAN_PATH_LIST列表即可,不需要动核心清理逻辑 - 建议右键以管理员身份运行脚本,避免系统目录、程序占用目录权限不足的问题
- 脚本默认会清空目录下所有文件+子文件夹,如果只需要删文件保留空的子目录,注释掉删除子目录的代码段就行
- 路径里支持写
%username%这类系统环境变量,脚本会自动解析成当前登录用户的对应路径,不用硬写用户名
内容的提问来源于stack exchange,提问作者Jimmy Walsh
相关产品推荐
相关产品推荐

