본문 바로가기
PYTHON

고급 5편] 클래스 기반 자동화 스크립트 구조화하기.zip

by Kim.Sung 2025. 5. 18.
728x90

파이썬 자동화 스크립트는 처음에는 함수 하나, 조건문 하나로도 충분합니다.  
하지만 기능이 많아지면 점점 코드가 늘어나고,  
복사-붙여넣기 하게 되면서 관리가 어려워집니다.


이번 고급편에서는  
**기존 자동화 스크립트를 '클래스 기반'으로 구조화하는 방법**을 다룹니다.  
파일 정리, 로그 감시, 텔레그램 알림 등 각 기능을 클래스화해  
재사용성과 유지보수성을 함께 높여봅니다.

🔧 예시 기능 구조

- FileSorter: 폴더 정리 기능  
- LogWatcher: 로그 감시 기능  
- TelegramNotifier: 알림 전송 기능

이 세 가지를 클래스 기반으로 나누고,  
MainController에서 조합하여 실행하는 방식입니다.

🐍 예제 코드 (핵심만 발췌)

```python
class FileSorter:
    def __init__(self, path):
        self.path = path

    def sort(self):
        # 확장자 기반 분류 코드
        pass

class LogWatcher:
    def __init__(self, filepath, keywords, callback):
        self.filepath = filepath
        self.keywords = keywords
        self.callback = callback

    def watch(self):
        # 파일 감시 로직
        pass

class TelegramNotifier:
    def __init__(self, token, chat_id):
        self.token = token
        self.chat_id = chat_id

    def send(self, message):
        # 텔레그램 메시지 전송
        pass

# 실행 제어부
class MainController:
    def __init__(self):
        self.sorter = FileSorter('~/Downloads')
        self.notifier = TelegramNotifier('TOKEN', 'CHAT_ID')
        self.watcher = LogWatcher('log.txt', ['ERROR'], self.handle_alert)

    def handle_alert(self):
        self.notifier.send("❗ 에러 감지됨. 확인 필요")

    def run_all(self):
        self.sorter.sort()
        self.watcher.watch()

if __name__ == '__main__':
    MainController().run_all()
```

📌 구조화의 장점

- 각 기능을 독립적으로 테스트/수정 가능  
- 같은 코드로 여러 프로젝트에 재사용 가능  
- 실행 흐름을 MainController로 한눈에 파악 가능  
- 예외 처리와 로깅 삽입도 용이함

🎯 이 구조로 할 수 있는 것

- 다양한 작업을 '조립하듯이' 붙여 넣을 수 있음  
- GUI 혹은 CLI 버전으로 쉽게 확장 가능  
- 메인함수 없이 테스트/연동이 가능해져 유지보수성이 급상승

자동화 스크립트를 하나의 ‘프로그램’처럼 발전시키고 싶다면  
함수 → 클래스 → 모듈 → 패키지 흐름으로 점진적으로 구조화해보세요.  
이번 편은 그 첫걸음입니다.