파이썬으로 파일 자동 분류 프로그램 만들기

파일들이 뒤죽박죽 엉켜 있진 않으신가요?

오늘은 파이썬으로 파일들을 자동으로 종류별로 정리해주는 프로그램을 만들어보고, 실제 테스트도 해보겠습니다.

 


목차


1. 어떤 프로그램인가요?

파이썬의 osshutil 표준 라이브러리를 사용해, 지정한 폴더 안의 파일들을 확장자에 따라 자동으로 분류합니다.

  • 이미지, 문서, 압축파일, 음악 등 카테고리별 정리
  • 정리 기준은 확장자이며, 기타는 별도 처리
  • 중복되는 폴더가 자동 생성되고 파일이 이동됩니다

2. 테스트용 더미 파일 생성기

먼저, 자동 정리 기능을 실험하기 위해 다양한 확장자의 더미 파일을 생성해봅니다.

import os
import random
import string

dummy_folder = r"C:\Users\seonggyu\Desktop\dummy_test"
os.makedirs(dummy_folder, exist_ok=True)

dummy_files = {
    "이미지": [".jpg", ".png", ".gif"],
    "문서": [".pdf", ".docx", ".txt", ".xlsx"],
    "압축": [".zip", ".rar"],
    "영상": [".mp4", ".avi"],
    "음악": [".mp3", ".wav"],
    "기타": [".dat", ".bak", ".tmp"]
}

def random_filename(length=8):
    return ''.join(random.choices(string.ascii_letters + string.digits, k=length))

for category, extensions in dummy_files.items():
    for ext in extensions:
        for _ in range(3):
            filename = random_filename() + ext
            filepath = os.path.join(dummy_folder, filename)
            with open(filepath, "w") as f:
                f.write(f"This is a dummy {category} file: {filename}\n")

print("테스트용 더미 파일 생성 완료.")

 

위 코드를 실행하면 다양한 파일이 담긴 dummy_test 폴더가 생성됩니다.

 

테스트 더미 파일 생성 완료

 

테스트를 위한 더미 파일들 만들었습니다. 아래 사진에서 확인 가능합니다.

더미파일 생성


3. 파일 자동 정리기 코드

이제 본격적으로 파일을 정리하는 코드를 작성합니다. 대상 폴더를 dummy_test로 지정하면 실험도 쉽게 할 수 있습니다.

import os
import shutil

target_folder = r"C:\Users\seonggyu\Desktop\dummy_test"

categories = {
    "이미지": [".jpg", ".jpeg", ".png", ".gif", ".bmp"],
    "문서": [".pdf", ".docx", ".doc", ".hwp", ".txt", ".xlsx"],
    "프로그램": [".exe", ".msi"],
    "압축파일": [".zip", ".rar", ".7z"],
    "영상": [".mp4", ".avi", ".mkv", ".mov"],
    "음악": [".mp3", ".wav", ".flac"],
    "기타": []
}

def organize_files(folder_path):
    files = os.listdir(folder_path)

    for file in files:
        file_path = os.path.join(folder_path, file)
        if os.path.isfile(file_path):
            ext = os.path.splitext(file)[1].lower()
            moved = False

            for category, ext_list in categories.items():
                if ext in ext_list:
                    target_dir = os.path.join(folder_path, category)
                    os.makedirs(target_dir, exist_ok=True)
                    shutil.move(file_path, os.path.join(target_dir, file))
                    moved = True
                    break

            if not moved:
                other_dir = os.path.join(folder_path, "기타")
                os.makedirs(other_dir, exist_ok=True)
                shutil.move(file_path, os.path.join(other_dir, file))

    print("파일 정리가 완료되었습니다.")

organize_files(target_folder)

4. 실행 결과

파일 정리 완료 텍스트출력

 

 

 

 

실행 전에는 파일이 모두 한 폴더에 섞여 있었지만, 코드 실행 후 아래처럼 깔끔하게 정리됩니다.

더미파일 자동 분류 완료
테스트 코드 실행 이 후 자동 분류

 

각 폴더 안에는 해당 확장자를 가진 파일들이 자동으로 이동되어 있습니다.

기타 파일

 

음악 파일

 

 

다운로드 폴더에 너무 많은 파일들이 섞여있어서 보기 힘들때 아주 유용한 코드입니다.

 

더 참신한 아이디어가 있다면 댓글로 알려주세요.