我的知识记录

Python 找出重复文件:自动清理占空间的大文件

import os
import hashlib
from collections import defaultdict

def file_hash(path, chunk=8192):
    h = hashlib.md5()
    with open(path, 'rb') as f:
        while True:
            data = f.read(chunk)
            if not data:
                break
            h.update(data)
    return h.hexdigest()

def find_duplicates(folder):
    sizes = defaultdict(list)
    for root, _, files in os.walk(folder):
        for name in files:
            path = os.path.join(root, name)
            try:
                sizes[os.path.getsize(path)].append(path)
            except OSError:
                pass
    dup_groups = []
    for size, paths in sizes.items():
        if len(paths) < 2:
            continue
        hashes = defaultdict(list)
        for p in paths:
            hashes[file_hash(p)].append(p)
        for h, same in hashes.items():
            if len(same) > 1:
                dup_groups.append(same)
    for group in dup_groups:
        print("重复文件:")
        for f in group:
            print("  ", f)
    print(f"共发现 {len(dup_groups)} 组重复")

find_duplicates('D:/Downloads')

Python 找出重复文件:自动清理占空间的大文件

标签:

更新时间:2026-09-14 13:42:08

上一篇:Python 定时关机:到点自动关机 / 重启

下一篇:Python 统计文件夹大小:找出最占空间的文件