본문 바로가기

강의/Python 기초

Chapter 25. 파일 자동 정리 프로그램 만들기

반응형

확장자별로 파일 정리하기

이번 시간에는 폴더 안에 있는 파일들을 확장자별로 자동 정리하는 프로그램을 만들어 보겠습니다.

예를 들어 다운로드 폴더에 이런 파일들이 있다고 해볼게요.

사진1.jpg
문서1.pdf
음악1.mp3
메모.txt
그림.png

이 파일들을 사람이 하나씩 옮기면 귀찮습니다.
하지만 파이썬을 사용하면 자동으로 이렇게 정리할 수 있습니다.

jpg 폴더 → 사진1.jpg
pdf 폴더 → 문서1.pdf
mp3 폴더 → 음악1.mp3
txt 폴더 → 메모.txt
png 폴더 → 그림.png

완성 프로그램 코드

import os
import shutil

# 정리할 폴더 경로 입력
folder_path = input("정리할 폴더 경로를 입력하세요: ")

# 폴더가 실제로 있는지 확인
if not os.path.exists(folder_path):
    print("폴더가 존재하지 않습니다.")
else:
    # 폴더 안의 파일 목록 가져오기
    file_list = os.listdir(folder_path)

    for file_name in file_list:
        # 파일 전체 경로 만들기
        file_path = os.path.join(folder_path, file_name)

        # 폴더는 건너뛰고 파일만 정리
        if os.path.isfile(file_path):
            # 파일 이름과 확장자 분리
            name, extension = os.path.splitext(file_name)

            # 확장자가 없는 파일은 건너뛰기
            if extension == "":
                continue

            # 확장자에서 점(.) 제거
            folder_name = extension[1:].lower()

            # 확장자 이름의 폴더 경로 만들기
            new_folder_path = os.path.join(folder_path, folder_name)

            # 확장자 폴더가 없으면 새로 만들기
            if not os.path.exists(new_folder_path):
                os.makedirs(new_folder_path)

            # 파일을 새 폴더로 이동
            new_file_path = os.path.join(new_folder_path, file_name)
            shutil.move(file_path, new_file_path)

            print(file_name, "파일을", folder_name, "폴더로 이동했습니다.")

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

실행 예시

정리할 폴더 경로를 입력하세요: C:\Users\user\Downloads
사진1.jpg 파일을 jpg 폴더로 이동했습니다.
문서1.pdf 파일을 pdf 폴더로 이동했습니다.
메모.txt 파일을 txt 폴더로 이동했습니다.
파일 정리가 완료되었습니다.

소스 코드 설명

1. 필요한 기능 불러오기

import os
import shutil

os는 폴더와 파일을 확인할 때 사용합니다.
shutil은 파일을 다른 폴더로 옮길 때 사용합니다.

쉽게 말하면,

os → 파일과 폴더 찾기
shutil → 파일 옮기기

입니다.


2. 정리할 폴더 입력받기

folder_path = input("정리할 폴더 경로를 입력하세요: ")

사용자가 정리하고 싶은 폴더 위치를 입력합니다.

예를 들어 다운로드 폴더라면 이렇게 입력할 수 있습니다.

C:\Users\user\Downloads

3. 폴더가 있는지 확인하기

if not os.path.exists(folder_path):
    print("폴더가 존재하지 않습니다.")

입력한 폴더가 실제로 있는지 확인합니다.

없는 폴더를 입력하면 프로그램이 정리할 수 없기 때문에
“폴더가 존재하지 않습니다.”라고 알려줍니다.


4. 폴더 안의 파일 목록 가져오기

file_list = os.listdir(folder_path)

입력한 폴더 안에 있는 파일과 폴더 이름을 모두 가져옵니다.

예를 들어 폴더 안에 이런 파일이 있다면,

사진.jpg
문서.pdf
노래.mp3

파이썬이 이 이름들을 하나씩 확인합니다.


5. 파일인지 확인하기

if os.path.isfile(file_path):

폴더 안에는 파일도 있고 폴더도 있을 수 있습니다.

이 프로그램은 파일만 정리합니다.
그래서 폴더는 건너뛰고 파일만 처리합니다.


6. 파일 확장자 분리하기

name, extension = os.path.splitext(file_name)

파일 이름과 확장자를 나눕니다.

예를 들어,

사진.jpg

은 이렇게 나누어집니다.

파일 이름: 사진
확장자: .jpg

7. 확장자 이름으로 폴더 만들기

folder_name = extension[1:].lower()

확장자 앞에는 점이 붙어 있습니다.

.jpg

여기서 점을 빼고,

jpg

라는 폴더 이름으로 사용합니다.

lower()는 대문자를 소문자로 바꾸는 기능입니다.

예를 들어,

JPG → jpg
PNG → png

처럼 정리됩니다.


8. 폴더가 없으면 새로 만들기

if not os.path.exists(new_folder_path):
    os.makedirs(new_folder_path)

만약 jpg 폴더가 없다면 새로 만듭니다.

이미 폴더가 있다면 다시 만들지 않습니다.


9. 파일 이동하기

shutil.move(file_path, new_file_path)

파일을 확장자 폴더 안으로 옮깁니다.

예를 들어,

사진.jpg

파일은

jpg 폴더

안으로 이동합니다.


프로그램 동작 순서

① 정리할 폴더 입력
② 폴더 안의 파일 목록 확인
③ 파일 확장자 확인
④ 확장자 이름으로 폴더 만들기
⑤ 파일을 해당 폴더로 이동
⑥ 정리 완료 메시지 출력

 

주의할 점

파일을 실제로 이동하는 프로그램입니다.
처음 실행할 때는 중요한 폴더보다는 연습용 폴더를 만들어서 테스트하는 것이 좋습니다.

예를 들어 바탕화면에 test 폴더를 만들고
그 안에 연습용 파일을 넣은 뒤 실행해 보세요.


마무리

이번 시간에는 파이썬으로 파일 자동 정리 프로그램을 만들어 보았습니다.

이 프로그램을 사용하면 다운로드 폴더처럼 파일이 많이 쌓이는 곳을
확장자별로 깔끔하게 정리할 수 있습니다.

파이썬 자동화 프로그램은 반복되는 일을 줄여주는 아주 편리한 도구입니다.


확장자별 정리 프로그램

반응형