왜 파일 정리가 필요하고 자동화해야 하는가?
다운로드 폴더나 바탕화면에 파일이 마구 쌓이면 정리가 어려워지고, 필요한 파일을 찾기 힘들어집니다.
이럴 때 파이썬을 활용해 파일을 자동으로 정리하면 다음과 같은 장점이 있습니다.
- 수작업 정리 시간 절약
- 파일 이름이나 확장자 기준으로 분류 가능
- 폴더를 자동 생성하고 이동까지 수행
- 매일 반복하는 루틴을 자동화
파이썬의 os
모듈과 shutil
모듈을 활용하면 복잡한 기능 없이도 간단한 자동화 스크립트를 만들 수 있습니다.
파이썬으로 파일 자동 정리 프로그램 만들기
1. 필요한 모듈 불러오기
import os
import shutil
os
는 폴더 탐색 및 파일 경로 관련 기능을 제공하고,shutil
은 파일 복사와 이동을 담당하는 모듈입니다.
2. 정리 대상 폴더 지정하기
target_folder = "C:/Users/사용자명/Downloads"
정리하고자 하는 폴더의 경로를 지정합니다. 슬래시 /
또는 역슬래시 두 번 \\
사용을 권장합니다.
3. 확장자별 폴더 이름 매핑
extension_folders = {
".jpg": "이미지",
".png": "이미지",
".pdf": "문서",
".docx": "문서",
".zip": "압축파일",
".exe": "설치파일"
}
파일 확장자를 기준으로 어떤 폴더로 이동할지 정리한 딕셔너리입니다.
4. 파일 정리 코드 구현
for filename in os.listdir(target_folder):
file_path = os.path.join(target_folder, filename)
if os.path.isfile(file_path):
_, ext = os.path.splitext(filename)
folder_name = extension_folders.get(ext.lower(), "기타")
dest_folder = os.path.join(target_folder, folder_name)
os.makedirs(dest_folder, exist_ok=True)
shutil.move(file_path, os.path.join(dest_folder, filename))
print(f"{filename} → {folder_name} 폴더로 이동 완료")
해석:
os.listdir()
: 폴더 내 모든 항목 가져오기os.path.isfile()
: 파일만 선택os.path.splitext()
: 확장자 분리dict.get()
: 해당 확장자 폴더 없으면 '기타'로os.makedirs()
: 폴더 생성 (이미 있으면 무시)shutil.move()
: 파일 이동
예제실습(날짜별 백업 및 로그 기록)
1. 바탕화면 파일을 날짜별로 정리
import datetime
desktop = os.path.join(os.path.expanduser("~"), "Desktop")
today = datetime.datetime.now().strftime("%Y-%m-%d")
for file in os.listdir(desktop):
path = os.path.join(desktop, file)
if os.path.isfile(path):
date_folder = os.path.join(desktop, "정리된파일", today)
os.makedirs(date_folder, exist_ok=True)
shutil.move(path, os.path.join(date_folder, file))
해석: 오늘 날짜로 폴더를 만들어 바탕화면 파일을 이동합니다.os.path.expanduser("~")
는 사용자 홈 디렉터리를 자동으로 가져옵니다.
2. 정리 내역 로그 파일로 기록하기
with open("정리로그.txt", "a", encoding="utf-8") as log:
for filename in os.listdir(target_folder):
file_path = os.path.join(target_folder, filename)
if os.path.isfile(file_path):
_, ext = os.path.splitext(filename)
folder_name = extension_folders.get(ext.lower(), "기타")
dest_folder = os.path.join(target_folder, folder_name)
os.makedirs(dest_folder, exist_ok=True)
shutil.move(file_path, os.path.join(dest_folder, filename))
log.write(f"{filename} → {folder_name} ({datetime.datetime.now()})\n")
해석:
- 실행된 파일 이동 내역을 텍스트 파일에 저장
datetime.now()
로 이동 시간 기록utf-8
인코딩으로 한글 로그 저장 가능
마무리
파이썬을 사용하면 반복되는 파일 정리 작업을 손쉽게 자동화할 수 있습니다.
단순한 폴더 이동부터 시작해서, 로그 남기기, 날짜별 백업까지 다양한 확장도 가능합니다.
더 나아가 GUI로 확장하거나 스케줄링으로 매일 정리를 자동 실행하도록 만들 수도 있습니다.
여러분의 업무 효율을 높이고 시간도 아껴주는 자동화, 지금 바로 실습해보세요!