본문 바로가기
카테고리 없음

[파이썬 심화] 파일 정리 자동화, 프로그램 만들기,예제 실습

by 개발자를 꿈꾸는 사람들과 함꼐 2025. 4. 5.

왜 파일 정리가 필요하고 자동화해야 하는가?

다운로드 폴더나 바탕화면에 파일이 마구 쌓이면 정리가 어려워지고, 필요한 파일을 찾기 힘들어집니다.
이럴 때 파이썬을 활용해 파일을 자동으로 정리하면 다음과 같은 장점이 있습니다.

      
  • 수작업 정리 시간 절약
  •   
  • 파일 이름이나 확장자 기준으로 분류 가능
  •   
  • 폴더를 자동 생성하고 이동까지 수행
  •   
  • 매일 반복하는 루틴을 자동화

파이썬의 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로 확장하거나 스케줄링으로 매일 정리를 자동 실행하도록 만들 수도 있습니다.
여러분의 업무 효율을 높이고 시간도 아껴주는 자동화, 지금 바로 실습해보세요!