본문 바로가기
코딩취미/Python

Python 프로젝트에서 폴더 관리 자동화

by 브링블링 2025. 5. 9.
반응형

Python 프로젝트에서 폴더 관리 자동화

프로젝트에서 구성 파일이나 사용자 데이터 폴더를 자동으로 관리하는 것은 필수적입니다. 이 글에서는 파이썬을 사용하여 지정된 폴더를 자동으로 생성하고, 기존 폴더가 있을 경우 내부 파일을 삭제하여 초기화하는 방법을 소개합니다.

기초 개념

1. os 모듈

  • Python 표준 라이브러리로 파일 및 폴더 관리에 사용됩니다.
  • os.path.exists() : 지정된 경로가 존재하는지 확인.
  • os.makedirs() : 지정된 경로에 폴더를 생성합니다.

2. shutil 모듈

  • 파일 및 폴더 작업을 더 쉽게 처리할 수 있도록 다양한 유틸리티를 제공합니다.
  • shutil.rmtree() : 폴더와 하위 내용을 재귀적으로 삭제합니다.

기본 코드 예제

import os
import shutil

if not os.path.exists(self.userAppConfigOutputPath):
    os.makedirs(self.userAppConfigOutputPath)
else:
    # 폴더가 존재하면 내부 비우기
    for filename in os.listdir(self.userAppConfigOutputPath):
        file_path = os.path.join(self.userAppConfigOutputPath, filename)
        try:
            if os.path.isfile(file_path) or os.path.islink(file_path):
                os.unlink(file_path)  # 파일이나 링크 제거
            elif os.path.isdir(file_path):
                shutil.rmtree(file_path)  # 하위 폴더 제거
        except Exception as e:
            print(f'Failed to delete {file_path}. Reason: {e}')

코드 설명

  • os.path.exists()로 지정된 폴더 경로가 존재하는지 확인.
  • 폴더가 없으면 os.makedirs()로 생성.
  • 폴더가 존재하면 내부 파일과 폴더를 삭제하여 초기화.
  • 예외 발생 시 오류 메시지를 출력.
반응형

고급 내용

1. 사용자 권한 확인

  • 삭제하려는 파일이나 폴더가 시스템에서 보호된 경우 예외 발생.
  • 이 경우 관리자 권한으로 실행하거나, 특정 권한을 부여해야 합니다.

2. 백업 및 복원

  • 폴더를 삭제하기 전에 백업을 자동으로 생성할 수 있습니다.
  • 예제:
backup_path = self.userAppConfigOutputPath + "_backup"
if os.path.exists(backup_path):
    shutil.rmtree(backup_path)
shutil.copytree(self.userAppConfigOutputPath, backup_path)

3. 조건부 파일 삭제

  • 특정 파일 확장자만 삭제하거나, 일정 기간이 지난 파일만 삭제하도록 조건 추가.
for filename in os.listdir(self.userAppConfigOutputPath):
    if filename.endswith(".log"):
        os.unlink(os.path.join(self.userAppConfigOutputPath, filename))

 

반응형