본문 바로가기
개발

Python으로 효율적인 파일 정렬기 만들기

by new-fp 2024. 11. 13.
728x90
반응형

Python으로 파일 정렬기 만들기

안녕하세요! 프로그래밍과 블로그를 동시에 즐기시는 여러분, 오늘은 Python을 이용해서 간단한 파일 정렬기를 만들어 보겠습니다. 이 프로그램은 특정 디렉토리에 있는 파일들을 이름이나 크기, 수정 날짜에 따라 정렬해주는 유용한 도구입니다. 다양한 상황에서 파일 관리가 있어야 할 분들에게 많은 도움이 될 것 같습니다. 그럼 시작해볼까요?

들어가며

파일 정리는 항상 번거로운 일입니다. 특히 프로젝트나 학업을 하다 보면 다양한 파일들이 생성되기 마련이죠. 이러한 파일들을 잘 관리하지 않으면 필요한 파일을 찾기 힘들고, 깔끔한 정리를 방해하게 됩니다. 이때 사용할 수 있는 것이 바로 파일 정렬기입니다!

코드 작성하기

먼저, Python의 osshutil 모듈을 사용하여 디렉토리 내의 파일을 정렬하는 코드를 작성해보겠습니다.

import os
import shutil

def sort_files(directory, sort_by='name'):
    if not os.path.isdir(directory):
        print("유효하지 않은 디렉토리입니다.")
        return

    # 디렉토리 내의 모든 파일의 목록 가져오기
    files = os.listdir(directory)
    files = [f for f in files if os.path.isfile(os.path.join(directory, f))]

    # 정렬 기준에 따라 파일 정렬하기
    if sort_by == 'name':
        files.sort()
    elif sort_by == 'size':
        files.sort(key=lambda x: os.path.getsize(os.path.join(directory, x)))
    elif sort_by == 'modified':
        files.sort(key=lambda x: os.path.getmtime(os.path.join(directory, x)))
    
    # 정렬된 파일 출력하기
    for file in files:
        print(file)

# 디렉토리와 정렬 기준 지정 후 함수 실행
sort_files('C:/your/directory/path', sort_by='size')

코드 설명하기

  1. 라이브러리 임포트: os는 운영 체제의 기본 기능을 사용하기 위해 필요하며, shutil은 파일 복사, 이동 등을 처리합니다.
  2. 함수 정의: sort_files 함수를 정의하여 특정 디렉토리 내의 파일을 정렬할 수 있도록 합니다.
  3. 디렉토리 검증: 주어진 경로가 유효한 디렉토리인지 확인합니다.
  4. 파일 목록 가져오기: os.listdir 함수를 활용하여 디렉토리 내의 모든 파일을 목록으로 가져옵니다.
  5. 파일 정렬하기: 이름, 크기, 수정 날짜에 따라 파일을 정렬합니다. 각 기준에 따라 정렬 로직이 다르게 구성되어 있습니다.
  6. 정렬된 결과 출력하기: 정렬된 파일 목록을 출력합니다.

예제 실행 결과

위 코드를 실행하면 지정한 디렉토리 내의 파일들이 크기 순서로 정렬되어 출력됩니다. 예를 들어, C:/your/directory/path에 있는 파일들이 크기별로 정렬되어 나타나게 되죠.

추가적으로

이 기본적인 파일 정렬기 기능 외에도 몇 가지 확장 아이디어가 있습니다:

  • 서브디렉토리 포함 여부 설정: 서브디렉토리 내의 파일도 함께 정렬할 수 있는 기능 추가.
  • 파일 확장자별 정렬: 특정 확장자를 가진 파일만 선택적으로 정렬하는 기능 추가.
  • 파일 이동 기능: 정렬된 파일들을 새로운 디렉토리로 이동하는 기능 추가.

마무리하며

이번 포스트에서는 Python을 통해 파일 정렬기를 만드는 방법을 알아보았습니다. 시간이 지나도 필요할 수 있는 파일 정리의 문제를 해결하는 데 도움이 되셨기를 바랍니다. 여러분도 프로그래밍을 통해 자신만의 유용한 도구를 만들어 보세요!

질문이 있으시면 언제든 댓글로 남겨주세요. 다음 포스트에서 뵙겠습니다!

728x90
반응형