본문 바로가기
PYTHON/고급학습

고급 2편] 파이썬으로 폴더를 자동 정리하는 방법.zip

by Kim.Sung 2025. 5. 17.

매일 쌓이는 다운로드 폴더,  
어느새 스크린샷, 압축파일, 이미지, 문서가 뒤섞여 보기만 해도 스트레스를 줍니다.  
오늘은 파이썬으로 이 복잡한 폴더를 자동으로 정리하는 스크립트를 만들어봅니다.  
한 번만 만들어두면 언제든 실행할 수 있고,  
윈도우 작업 스케줄러를 통해 매일 자동 정리도 가능합니다.


📁 폴더 구조 예시

- 정리 대상 폴더: C:\Users\사용자\Downloads  
- 분류 기준 폴더:  
  - Downloads\Images  
  - Downloads\Docs  
  - Downloads\Zips  
  - Downloads\Etc

🧩 정리 기준 설정

- 이미지: .jpg, .png, .jpeg, .gif  
- 문서: .docx, .pptx, .xlsx, .pdf  
- 압축: .zip, .rar  
- 그 외: Etc로 분류

🐍 파이썬 코드

```python
import os
import shutil

# 대상 폴더 경로
target_dir = os.path.expanduser('~/Downloads')

# 분류 기준 정의
file_map = {
    'Images': ['.jpg', '.jpeg', '.png', '.gif'],
    'Docs': ['.docx', '.pptx', '.xlsx', '.pdf'],
    'Zips': ['.zip', '.rar'],
}

def sort_files():
    for filename in os.listdir(target_dir):
        src = os.path.join(target_dir, filename)
        if os.path.isfile(src):
            ext = os.path.splitext(filename)[1].lower()
            moved = False
            for folder, ext_list in file_map.items():
                if ext in ext_list:
                    dest = os.path.join(target_dir, folder)
                    os.makedirs(dest, exist_ok=True)
                    shutil.move(src, os.path.join(dest, filename))
                    moved = True
                    break
            if not moved:
                etc = os.path.join(target_dir, 'Etc')
                os.makedirs(etc, exist_ok=True)
                shutil.move(src, os.path.join(etc, filename))

if __name__ == '__main__':
    sort_files()
```

🔁 실행 방법

1. 위 코드를 `sort_downloads.py`로 저장  
2. 더블 클릭하거나 명령 프롬프트에서 `python sort_downloads.py` 실행  
3. 윈도우 작업 스케줄러(Task Scheduler)에서 매일 자동 실행 등록 가능

📌 추가 팁

- 바탕화면도 같은 구조로 응용 가능  
- USB 연결 시 자동 정리도 스크립트 확장 가능  
- GitHub 백업 자동화, 클라우드 동기화와 연계도 가능

이렇게 만들어 두면 귀찮아서 미뤄뒀던 폴더 정리를  
자동으로 처리할 수 있어 훨씬 쾌적한 작업환경을 유지할 수 있습니다.