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

이번 고급편에서는
**기존 자동화 스크립트를 '클래스 기반'으로 구조화하는 방법**을 다룹니다.
파일 정리, 로그 감시, 텔레그램 알림 등 각 기능을 클래스화해
재사용성과 유지보수성을 함께 높여봅니다.
🔧 예시 기능 구조
- 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 버전으로 쉽게 확장 가능
- 메인함수 없이 테스트/연동이 가능해져 유지보수성이 급상승
자동화 스크립트를 하나의 ‘프로그램’처럼 발전시키고 싶다면
함수 → 클래스 → 모듈 → 패키지 흐름으로 점진적으로 구조화해보세요.
이번 편은 그 첫걸음입니다.
'PYTHON' 카테고리의 다른 글
| [고급 2편] 파이썬으로 외부 API 자동 호출하기.zip (0) | 2025.05.15 |
|---|---|
| [PYTHON /Import ] 파이썬 import Requests error 해결 하기 (0) | 2021.01.26 |