🐍 Python 🌱 입문

Python 자동화 스크립트

업무 자동화 스크립트 작성법

⏱️ 5시간 👁️ 23 조회
📖 강좌 내용
# 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. 실행 파일 배포