结论是:必须用os+pathlib动态获取并分类处理Windows/macOS/Linux的系统级、用户级、项目级临时路径,配合shutil.rmtree()和os.remove()删除,但需经安全校验、三层过滤(白名单路径/黑名单后缀/大小阈值)及预览确认,否则极易误删关键文件。
直接说结论:用 os + pathlib 遍历常见临时目录,配合 shutil.rmtree() 和 os.remove() 删除,但必须加安全校验——否则极易误删系统关键文件。
Windows、macOS、Linux 的临时路径差异大,且用户自建的缓存目录(比如 VS Code 的 Cache、Python 的 __pycache__)也得覆盖。不能只清 C:WindowsTemp 或 /tmp 就完事。
os.environ.get("TEMP")(Windows)、/tmp(macOS/Linux)、$XDG_CACHE_HOME(Linux 桌面规范)pathlib.Path.home() / ".cache"、pathlib.Path.home() / "Library/Caches"(macOS)**/__pycache__、**/.mypy_cache、**/node_modules(需谨慎,建议默认不删)shutil.rmtree() 所有匹配目录?因为很多“临时目录”正在被进程占用(比如 Chrome 正在写缓存、IDE 正在读索引),强行删除会触发 PermissionError 或 Process cannot access the file;更危险的是,某些路径名相似但用途关键(如 /var/tmp 保留跨重启的临时文件,/tmp 才是真正可清的)。
os.access(path, os.W_OK) 检查写权限os.stat() 获取最后访问时间,跳过 24 小时内活跃的目录(避免杀活进程缓存)os.remove(),对空目录用 os.rmdir(),非空目录才用 shutil.rmtree() —— 减少权限失败概率误删 /usr/local/lib/python3.11/site-packages 这种路径,工具就从“清理工具”变成“系统破坏器”。必须靠白名单+后缀黑名单+大小阈值三重卡控。
立即学习“Python免费学习笔记(深入)”;
os.environ.get("TEMP")、pathlib.Path("/tmp")),其他一律跳过[".lock", ".pid", ".socket", ".log"] 这类文件跳过(即使在 temp 目录里)真正麻烦的不是代码怎么写,而是“哪些路径该信、哪些时间该等、哪些文件名看着像垃圾实则是锁文件”——这些没法靠通用规则穷举,得靠日志留痕 + 默认保守策略兜底。每次运行前输出将删的路径列表,按回车才执行,比任何自动逻辑都可靠。