删除重复文件

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
❤️ 转载文章请注明出处,谢谢!❤️