[Python] 내 컴퓨터 중복 파일 찾기 – 해시값 비교로 이미지/문서 정리하기

2025. 3. 28. 13:26·프로그래밍/Python

[Python] 내 컴퓨터 중복 파일 찾기 – 해시값 비교로 이미지/문서 정리하기

컴퓨터에 파일이 많다 보면 중복된 파일이 생기기 쉽습니다.

이 글에서는 Python을 사용해 폴더 내 중복 파일을 자동으로 찾아내는 방법을 소개합니다.
`hashlib`으로 MD5 해시값을 비교하여 이름이 달라도 내용이 같은 파일을 식별할 수 있습니다.


✅ 1. Python 코드 – 중복 파일 탐색기


import os
import hashlib
from collections import defaultdict

def get_file_hash(filepath):
    hasher = hashlib.md5()
    with open(filepath, 'rb') as f:
        while chunk := f.read(8192):
            hasher.update(chunk)
    return hasher.hexdigest()

def find_duplicate_files(folder_path):
    hash_map = defaultdict(list)

    for root, dirs, files in os.walk(folder_path):
        for filename in files:
            full_path = os.path.join(root, filename)
            try:
                file_hash = get_file_hash(full_path)
                hash_map[file_hash].append(full_path)
            except Exception as e:
                print(f"❌ 오류 발생: {full_path} → {e}")

    # 중복만 추려서 리턴
    duplicates = {h: paths for h, paths in hash_map.items() if len(paths) > 1}
    return duplicates

# ▶ 사용 예시
target_folder = "D:/Working/2025/2025.03.28"
duplicates = find_duplicate_files(target_folder)

print(f"📂 중복 파일 검색 결과 ({len(duplicates)} 그룹):")
for hash_val, files in duplicates.items():
    print(f"\n🔁 해시: {hash_val}")
    for file in files:
        print(f"  - {file}")

✅ 2. 실행 결과 예시


📂 중복 파일 검색 결과 (1 그룹):

🔁 해시: 57203fe4526a8dd1a26f59e4ef209162
  - D:/Working/2025/2025.03.28\1.dll
  - D:/Working/2025/2025.03.28\2.dll
  - D:/Working/2025/2025.03.28\Google.Protobuf.dll

✅ 3. 어떤 파일이 중복인지 어떻게 판단하나요?

파일을 1줄씩 비교하면 느리기 때문에 파일의 MD5 해시값을 구해 서로 비교합니다.

- 이름이 달라도, 내용이 같으면 → 해시값 같음 - 내용이 다르면 → 해시값 다름


📌 마무리

이 스크립트를 사용하면 중복 이미지 / 문서 / 백업파일 등을 손쉽게 찾고 정리할 수 있습니다.

필요시 자동 삭제, 로그 저장, 확장자 필터링까지 확장 가능하니 간단한 정리 스크립트가 필요할 때 꼭 활용해보세요 😊

도움이 되셨다면 공감 / 댓글 부탁드립니다!

반응형
저작자표시 비영리 (새창열림)

'프로그래밍 > Python' 카테고리의 다른 글

[Python] pandas로 CSV, JSON, Excel 완전 정복 – 파일 불러오기부터 저장까지 실전 예제  (2) 2025.05.21
[Python] 나만의 명언 봇 만들기 – JSON으로 랜덤 출력하기  (2) 2025.03.28
[Python] 파이썬으로 PDF 내용 추출하는 방법 – PyMuPDF(fitz) 활용  (0) 2025.03.26
[python] FastAPI에서 async/await으로 비동기 API 만들기 - 느린 작업도 빠르게 처리하기  (0) 2025.03.20
FastAPI에서 POST 요청 처리하기 - 사용자 입력 데이터 받기 예제  (0) 2025.03.20
'프로그래밍/Python' 카테고리의 다른 글
  • [Python] pandas로 CSV, JSON, Excel 완전 정복 – 파일 불러오기부터 저장까지 실전 예제
  • [Python] 나만의 명언 봇 만들기 – JSON으로 랜덤 출력하기
  • [Python] 파이썬으로 PDF 내용 추출하는 방법 – PyMuPDF(fitz) 활용
  • [python] FastAPI에서 async/await으로 비동기 API 만들기 - 느린 작업도 빠르게 처리하기
큐레이트
큐레이트
저의 일상을 기록하는 블로그입니다.
  • 큐레이트
    큐레이트의 기록
    큐레이트
  • 전체
    오늘
    어제
    • 분류 전체보기 (190)
      • 국내여행 (37)
        • 애견여행 (33)
        • 맛집여행 (2)
      • 프로그래밍 (82)
        • C# (24)
        • Python (24)
        • Flutter (5)
        • .NET (4)
        • ASP (7)
        • Html (5)
        • Tomcat (2)
        • typescript (3)
        • etc (8)
      • 일상생활 (71)
        • 다이어트일지 (70)
        • 기타 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • 복이랑스마트스토어
    • 복이랑블로그
  • 공지사항

    • 블로그 소개
  • 인기 글

  • 태그

    오블완
    다이어트 일지
    운동일지
    pt
    파이썬
    Flutter
    오운완
    다이어트일지
    티스토리챌린지
    제주도여행
    자동매매
    HTML
    헬스
    제주도
    애견여행
    애견동반
    자동화
    애견동반여행
    식단
    Python
    식단관리
    다이어트
    체중기록
    FastAPI
    iis
    DevExpress
    일상생활
    C#
    제주도애견동반여행
    국내여행
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
큐레이트
[Python] 내 컴퓨터 중복 파일 찾기 – 해시값 비교로 이미지/문서 정리하기
상단으로

티스토리툴바