본문 바로가기

Study Information Technology

파일을 사용자 정의 기준으로 일괄 변경 및 정리하는 커맨드라인 도구 만들기

728x90
반응형

파일을 사용자 정의 기준으로 일괄 변경 및 정리하는 커맨드라인 도구 만들기

Overview

파일을 일괄적으로 변경하고 정리하는 커맨드라인 도구를 만드는 과정은 여러 단계로 나눌 수 있습니다. 이 과정에서는 사용자가 정의한 기준에 따라 파일을 자동으로 리네임하고 정리하는 기능을 구현하게 됩니다. 이 설명에서는 Python을 이용해 커맨드라인 도구를 만드는 방법을 구체적으로 살펴보겠습니다. Python은 간결하고 강력한 스크립트 언어로, 다양한 파일 처리 작업을 손쉽게 수행할 수 있기 때문에 유용합니다.

1. 환경 설정

우선 Python과 필요한 라이브러리를 설치해야 합니다. Python 3.7 이상의 버전을 설치하고, argparseos, shutil 라이브러리를 사용할 것입니다. argparse는 커맨드라인 인자를 처리하는 데 사용되고, osshutil은 파일 시스템 작업을 처리하는 데 사용됩니다.

pip install argparse

2. 스크립트 기본 구조

커맨드라인 도구를 만들기 위해 스크립트의 기본 구조를 설계해야 합니다. 다음은 파일을 일괄적으로 리네임하고 정리할 수 있는 기본 Python 스크립트의 예제입니다.

import argparse
import os
import shutil

def rename_and_organize_files(directory, prefix, suffix):
for filename in os.listdir(directory):
new_name = f"{prefix}_{filename}_{suffix}"
old_path = os.path.join(directory, filename)
new_path = os.path.join(directory, new_name)

if os.path.isfile(old_path):
os.rename(old_path, new_path)
print(f"Renamed {old_path} to {new_path}")

def main():
parser = argparse.ArgumentParser(description="Rename and organize files in a directory.")
parser.add_argument('directory', type=str, help='Directory where the files are located')
parser.add_argument('--prefix', type=str, default='', help='Prefix to add to file names')
parser.add_argument('--suffix', type=str, default='', help='Suffix to add to file names')

args = parser.parse_args()
rename_and_organize_files(args.directory, args.prefix, args.suffix)

if __name__ == "__main__":
main()

3. 코드 설명

3.1. import 구문

  • argparse: 커맨드라인 인자를 쉽게 처리하기 위해 사용됩니다.
  • os: 파일 및 디렉토리 경로 작업을 위해 사용됩니다.
  • shutil: 고급 파일 작업(예: 파일 복사, 이동 등)을 지원합니다.

3.2. rename_and_organize_files 함수

이 함수는 디렉토리 내의 모든 파일을 순회하면서 파일 이름을 사용자 정의 prefixsuffix로 변경합니다.

  • os.listdir(directory): 지정된 디렉토리 내의 모든 파일과 폴더를 리스트로 반환합니다.
  • os.path.join(directory, filename): 디렉토리와 파일 이름을 결합하여 전체 경로를 생성합니다.
  • os.rename(old_path, new_path): 파일 이름을 변경합니다.

3.3. main 함수

  • argparse.ArgumentParser: 커맨드라인에서 인자를 받을 수 있게 설정합니다.
  • parser.add_argument: directory, prefix, suffix와 같은 인자를 정의합니다.
  • args = parser.parse_args(): 커맨드라인 인자를 파싱하여 args에 저장합니다.
  • rename_and_organize_files(...): 실제 파일 리네임 작업을 수행합니다.

4. 에러 처리

일반적인 에러와 그 해결 방법은 다음과 같습니다.

  • 파일 권한 에러:

  • 에러 메시지: PermissionError: [Errno 13] Permission denied: 'file.txt'

  • 해결 방법: 파일이 읽기 전용이거나 사용자가 해당 파일에 대한 권한이 없는 경우입니다. 파일 권한을 변경하거나 관리자 권한으로 실행해보세요.

  • 디렉토리 없음:

  • 에러 메시지: FileNotFoundError: [Errno 2] No such file or directory: 'path/to/directory'

  • 해결 방법: 지정한 디렉토리가 존재하는지 확인하고 올바른 경로를 입력했는지 확인하세요.

5. 개선 사항

더 나아가 다음과 같은 기능을 추가하여 도구를 확장할 수 있습니다.

  • 파일 유형 필터링: 특정 확장자만 처리할 수 있게 필터링 기능 추가.
  • 로그 기록: 파일 변경 내역을 로그 파일에 기록.
  • 상호작용형 UI: CLI 대신 그래픽 사용자 인터페이스(GUI)를 제공하여 사용자 경험 향상.

참고문서

이 스크립트와 문서들을 참고하여 파일을 일괄적으로 리네임하고 정리하는 도구를 효과적으로 개발할 수 있습니다.

728x90
반응형