我的知识记录

Python 批量删除指定类型文件:清理缓存与垃圾文件

用 Python 批量删除指定类型文件,如 .tmp、.log、.bak、Thumbs.db,先列出待删清单确认,再统一删除,附回收站保护与 dry-run。

场景痛点

项目跑久了,文件夹里堆了一堆 .tmp 临时文件、.log 日志、.bak 备份、Thumbs.db 缩略图缓存,占空间还干扰视线。手动搜索删除不敢全选,怕误删有用文件。用 Python 按扩展名精确匹配,先把要删的文件全部列出来给你过目,确认后再统一删除,比在资源管理器里瞎选安全得多。

用到的库

纯标准库,无需 pip 安装:

# os 为标准库

完整代码

import os

# ========== 配置区 ==========
TARGET_DIR = "./项目目录"
DELETE_EXTS = [".tmp", ".bak", ".log", ".old"]   # 要删除的扩展名
DELETE_NAMES = ["Thumbs.db", ".DS_Store"]         # 要删除的固定文件名
DRY_RUN = True               # True=只列清单,False=真删
RECURSIVE = True             # 是否递归子文件夹
# ============================


def match(name: str) -> bool:
if name in DELETE_NAMES:
return True
ext = os.path.splitext(name)[1].lower()
return ext in DELETE_EXTS


def main():
if not os.path.isdir(TARGET_DIR):
print(f"目录不存在:{TARGET_DIR}")
return

to_delete = []
if RECURSIVE:
for dirpath, _, filenames in os.walk(TARGET_DIR):
for name in filenames:
if match(name):
to_delete.append(os.path.join(dirpath, name))
else:
for name in os.listdir(TARGET_DIR):
p = os.path.join(TARGET_DIR, name)
if os.path.isfile(p) and match(name):
to_delete.append(p)

print(f"待删除 {len(to_delete)} 个文件:")
total_size = 0
for p in to_delete:
size = os.path.getsize(p)
total_size += size
print(f"  {p}  ({size/1024:.1f} KB)")

print(f"\n共 {len(to_delete)} 个,{total_size/1024/1024:.2f} MB")
if not DRY_RUN:
for p in to_delete:
os.remove(p)
print("已删除。")
else:
print("当前是预览。确认清单无误后,把 DRY_RUN 改成 False 再跑一次。")


if __name__ == "__main__":
main()

代码讲解

  • match 双条件:既按扩展名删(.tmp.log),也按固定文件名删(Thumbs.db.DS_Store)。两种垃圾都能清。
  • 先收集后删除:把所有匹配文件先放进 to_delete 列表,打印出来连同大小一起给你看。看完清单再决定删不删,这比边遍历边删安全得多。
  • 统计总大小os.path.getsize 累加,告诉你这次清理能释放多少空间,删之前心里有数。
  • RECURSIVE 开关:True 时用 os.walk 递归子目录,适合清整个项目;False 只清当前层。
  • os.remove:真正删除文件,不进回收站,直接从磁盘抹掉。

运行结果

第一次运行列出所有待删文件路径和总大小。人工核对没有误删后,把 DRY_RUN 改成 False 再跑一次,这些垃圾文件就被删掉,磁盘空间释放。

注意事项

  • os.remove 不进回收站:删了就没了,别想后悔。重要项目先整个复制一份。
  • dry-run 必须先跑:这是删除操作,预览清单是最后一道防线。发现匹配到不该删的文件,立刻调整 DELETE_EXTS。
  • 别用通配符太宽:比如 .log 可能命中你想留的日志文件。删之前看清单。
  • 路径别选错:TARGET_DIR 指到系统目录(比如 C:\Windows)会把系统文件删掉,脚本只在自己项目目录跑。
  • 回收站方案:想要"删到回收站"的效果,可装 send2trash 库(pip install send2trash),把 os.remove 换成 send2trash.send2trash(p),删除可恢复。

Python 批量删除指定类型文件:清理缓存与垃圾文件

标签:

更新时间:2026-09-14 21:28:35

上一篇:Python批量解压多个压缩包:自动遍历目录一键提取

下一篇:Python批量创建软链接和快捷方式教程