# Python 자동화 스크립트 가이드
## 학습 목표
Python으로 반복 작업을 자동화합니다.
## 1. 자동화란?
반복적인 수작업을 코드로 처리하는 것입니다.
- 시간 절약
- 실수 방지
- 일관된 결과
- 24시간 실행 가능
## 2. 파일/폴더 처리
import os
import shutil
현재 디렉토리:
os.getcwd()
os.chdir("/path/to/dir")
파일 목록:
os.listdir(".")
for f in os.listdir("."):
print(f)
파일 조작:
os.rename("old.txt", "new.txt")
os.remove("file.txt")
os.makedirs("a/b/c", exist_ok=True)
폴더 복사/이동:
shutil.copy("src.txt", "dst.txt")
shutil.copytree("src_dir", "dst_dir")
shutil.move("src", "dst")
shutil.rmtree("dir")
파일 검색:
import glob
glob.glob("*.txt")
glob.glob("**/*.py", recursive=True)
## 3. 엑셀 자동화
pip install openpyxl
읽기:
from openpyxl import load_workbook
wb = load_workbook("data.xlsx")
sheet = wb.active
value = sheet["A1"].value
for row in sheet.iter_rows(min_row=2, values_only=True):
print(row)
쓰기:
from openpyxl import Workbook
wb = Workbook()
sheet = wb.active
sheet["A1"] = "Name"
sheet["B1"] = "Age"
sheet.append(["Kim", 25])
wb.save("output.xlsx")
## 4. PDF 처리
pip install PyPDF2 reportlab
읽기:
from PyPDF2 import PdfReader
reader = PdfReader("file.pdf")
for page in reader.pages:
print(page.extract_text())
병합:
from PyPDF2 import PdfMerger
merger = PdfMerger()
merger.append("file1.pdf")
merger.append("file2.pdf")
merger.write("merged.pdf")
merger.close()
생성:
from reportlab.pdfgen import canvas
c = canvas.Canvas("new.pdf")
c.drawString(100, 750, "Hello PDF")
c.save()
## 5. 이메일 발송
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
msg = MIMEMultipart()
msg["From"] = "sender@gmail.com"
msg["To"] = "receiver@gmail.com"
msg["Subject"] = "Test Email"
msg.attach(MIMEText("Hello", "plain"))
server = smtplib.SMTP("smtp.gmail.com", 587)
server.starttls()
server.login("sender@gmail.com", "app_password")
server.send_message(msg)
server.quit()
## 6. 스케줄링
pip install schedule
import schedule
import time
def job():
print("Working...")
schedule.every(10).minutes.do(job)
schedule.every().hour.do(job)
schedule.every().day.at("10:30").do(job)
schedule.every().monday.do(job)
while True:
schedule.run_pending()
time.sleep(1)
## 7. 웹 브라우저 자동화
pip install selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get("https://example.com")
element = driver.find_element(By.ID, "username")
element.send_keys("myuser")
button = driver.find_element(By.CSS_SELECTOR, "button[type=submit]")
button.click()
driver.quit()
## 8. GUI 자동화
pip install pyautogui
import pyautogui
마우스:
pyautogui.moveTo(100, 200)
pyautogui.click()
pyautogui.doubleClick()
pyautogui.rightClick()
pyautogui.scroll(3)
키보드:
pyautogui.typewrite("Hello")
pyautogui.press("enter")
pyautogui.hotkey("ctrl", "c")
스크린샷:
pyautogui.screenshot("screen.png")
## 9. API 연동
import requests
GET:
response = requests.get("https://api.example.com/users")
data = response.json()
POST:
response = requests.post("https://api.example.com/users", json={"name": "Kim"})
인증:
headers = {"Authorization": "Bearer token123"}
response = requests.get(url, headers=headers)
## 10. 데이터베이스 자동화
import sqlite3
conn = sqlite3.connect("data.db")
cursor = conn.cursor()
cursor.execute("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT)")
cursor.execute("INSERT INTO users (name) VALUES (?)", ("Kim",))
conn.commit()
cursor.execute("SELECT * FROM users")
rows = cursor.fetchall()
conn.close()
## 11. 실행 파일 만들기
pip install pyinstaller
pyinstaller --onefile script.py
pyinstaller --onefile --windowed app.py
pyinstaller --onefile --icon=app.ico script.py
dist 폴더에 실행 파일 생성됨
## 12. 에러 처리와 로깅
import logging
logging.basicConfig(
level=logging.INFO,
format="%(asctime)s - %(levelname)s - %(message)s",
filename="app.log"
)
try:
result = do_something()
logging.info(f"Success: {result}")
except Exception as e:
logging.error(f"Error: {e}")
## 추천 학습 순서
1. 파일/폴더 처리
2. 엑셀/PDF 자동화
3. 웹 스크래핑/API
4. 스케줄링
5. 실행 파일 배포