删除重复文件
import os
import re
# === 配置 ===
FOLDER = r"C:\Users\1" # 目标目录
RECURSIVE = False # True=递归子文件夹
DRY_RUN = False # True=预演;确认后改为 False 真删
# 规则:只要“文件名(不含扩展名)”里出现 (数字) 就认定为副本
# 例:a(1).txt / a (2).txt / a(12) (3).jpg 都会被删除
PAREN_NUM_IN_STEM = re.compile(r"\(\s*\d+\s*\)")
def iter_files(folder):
if RECURSIVE:
for root, _, files in os.walk(folder):
for f in files:
yield root, f
else:
for f in os.listdir(folder):
p = os.path.join(folder, f)
if os.path.isfile(p):
yield folder, f
deleted, skipped = 0, 0
for root, fname in iter_files(FOLDER):
stem, ext = os.path.splitext(fname)
if ext == "": # 无扩展名也按规则处理
stem = fname
if PAREN_NUM_IN_STEM.search(stem):
path = os.path.join(root, fname)
try:
if DRY_RUN:
print(f"[预演] 将删除:{path}")
else:
os.remove(path)
print(f"已删除:{path}")
deleted += 1
except Exception as e:
print(f"删除失败:{path},原因:{e}")
skipped += 1
print(f"\n完成。删除目标 {deleted} 个,失败/跳过 {skipped} 个。")
原始文件
C:\Users\1\34 (2).txt
C:\Users\1\34 (3).txt
C:\Users\1\34 (4).txt
C:\Users\1\34 (5).txt
C:\Users\1\34 (6).txt
C:\Users\1\34 (7).txt
C:\Users\1\34 (8).txt
C:\Users\1\34 (9).txt
C:\Users\1\34 (1).txt
C:\Users\1\34.txt
C:\Users\1\1.txt
执行后
已删除:C:\Users\Puck\Desktop\1\34 (1).txt
已删除:C:\Users\Puck\Desktop\1\34 (2).txt
已删除:C:\Users\Puck\Desktop\1\34 (3).txt
已删除:C:\Users\Puck\Desktop\1\34 (4).txt
已删除:C:\Users\Puck\Desktop\1\34 (5).txt
已删除:C:\Users\Puck\Desktop\1\34 (6).txt
已删除:C:\Users\Puck\Desktop\1\34 (7).txt
已删除:C:\Users\Puck\Desktop\1\34 (8).txt
已删除:C:\Users\Puck\Desktop\1\34 (9).txt
❤️ 转载文章请注明出处,谢谢!❤️