본문 바로가기
ROKEY

[20250210] 파이썬 프로그래밍 - 파이썬 활용 심화 1

by kode-daks 2025. 2. 10.

수업 목표

- os, shutil 모듈을 사용하여 파일 및 디렉토리를 관리할 수 있다.

- pathlib 모듈을 사용하여 파일 및 디렉토리를 관리할 수 있다.

- openpyxl 모듈을 활용하여 excel 데이터를 읽고 쓰고 수정할 수 있다.

- pandas 라이브러리를 활용하여 excel 데이터를 다룰 수 있다.

- requests, BeautifulSoup을 활용하여 웹 스크래핑을 할 수 있다.

 

 

1. 파일 관리 기본 (os, shutil 활용)

os 모듈

- 내장 모듈로, 운영 체제와 상호 작용하는 기능 제공

- import os

- 현재 작업 디렉토리 확인 : os.getcwd()

- 작업 디렉토리 변경 : os.chdir("경로")

- 현재 디렉토리 및 파일 목록 조회 : os.listdir(".")

- 디렉토리 생성 : os.mkdir("경로")

- 디렉토리 삭제 : os.rmdir("경로")

- 파일 존재 여부 확인 : os.path.exists("파일")

- 경로 합치기 : os.path.join(os.getcwd(), "파일")

- 파일명만 추출 : os.path.basename(f"{folder}/file.txt")

- 디렉토리 경로 추출 : os.path.dirname(f"{folder}/file.txt")

 

shutil 모듈

- 파일 및 디렉토리 관리를 할 수 있는 고수준 파일 조작 기능을 제공함

- import shutil

- 디렉토리 복사 : shutil.copytree("source_dir", "destination_dir")

- 파일 및 디렉토리 이동 : shutil.move("old_location", "new_location")

- 파일 및 디렉토리 삭제 : shutil.rmtree("directory_to_delete")

 

2. 파일 정리 프로그램 제작 (pathlib 활용)

pathlib 모듈

- 객체 지향 방식으로 파일 및 디렉토리 관리 가능

- from pathlib import Path

- 작업 디렉토리 확인 : Path.cwd()

- 경로 생성 : path = Path("folder"); print(path/"file.txt") # /는 Path의 경로 결합 연산자

- 디렉토리 및 파일 존재 여부 확인 : path.exists()

- 존재 및 파일 여부 확인 : path.is_file()

- 존재 및 디렉토리 여부 확인 : path.is_dir()

- 디렉토리 생성 : path=Path("디렉토리"); path.mkdir(exist_ok=True) # 존재해도 에러 없게

- 디렉토리 삭제 : path.rmdir()

- 파일 생성 : path.touch()

- 파일 삭제 : path.unlink()

- 파일 및 폴더 목록 조회 : for item in path.iterdir(): print(item)

- 파일 확장자 : path.suffix

- 파일 이름 변경 및 이동하기 : dest_path.parent.mkdir(exist_ok=True); path.rename(destination)

 

3. Excel 읽기/쓰기 기초 (openpyxl)

openpyxl 모듈

- 파이썬에서 엑셀 파일을 읽고 쓰기 위해 사용되는 라이브러리로 xlsx 포맷을 지원함

- import openpyxl

- from openpyxl import Workbook

- from openpyxl import load_workbook

- 엑셀 구성 : workbook > sheet > cell

 

파일 생성

wb = Workbook() # 새로운 워크북 생성
sheet = sb.active # 활성 시트 선택

# 셀에 데이터 입력
sheet["A1"] = "Hello"
sheet["B1"] = "World"

# 저장하기
wb.save("example.xlsx")

 

파일 열기

wb = load_workbook("example.xlsx") # 파일 열기
sheet = wb.active # 활성 시트 선택

#특정 셀의 값 읽기
print(sheet["A1"].value)
print(sheet["B1"].value)

 

여러 셀 데이터 읽기

for row in sheet.iter_rows(min_row=1, max_col=3, max_row=5): #시작 행, 마지막 열, 마지막 행
	for cell in row:
    	print(cell.value)

 

 엑셀 파일 수정 : 셀 값 수정하기

sheet["A1"] = "새로운값"
wb.save("file.xlsx")

 

숫자, 날짜, 수식 입력

from openpyxl.utils import get_column_letter
from datetime import datetime

wb = Workbook()
sheet = wb.active

sheet["A1"] = datetime(2025,1,28) # 날짜 입력
sheet["B1"] = 100 # 숫자 입력
sheet["C1"] = "=B1*2" # 수식 입력

wb.save("file.xlsx")

 

4. Excel 데이터 정리 자동화 (openpyxl, pandas 활용)

엑셀 파일 읽기

엑셀 데이터를 판다스의 데이터프레임으로 변환하여 처리

import pandas as pd
from openpyxl import Workbook, load_workbook
from random import randint


def create_ex():
    wb = Workbook() # workbook 지정
    ws = wb.create_sheet("Sheet1") # 시트 생성
    sheet = wb["Sheet1"] # 시트 지정
    sheet["A1"] = "age" # 셀에 컬럼 명 입력
    for i in range(2, 11): # 셀에 값 입력
        sheet[f"A{i}"] = randint(1,99)
    wb.save(f"./ex.xlsx") # 저장

# create_ex()

path = "./ex.xlsx" 
df = pd.read_excel(path, sheet_name="Sheet1") # 불러오기

# 판다스 사용 분석
print(df.head())
print(df["age"].sum())
print(df["age"].mean())

df["born year"] = 2025 - df["age"] # 데이터프레임 내 새로운 열 생성
print(df.head())

 

5. 웹 데이터 가져오기 (requests, BeautifulSoup)

웹 스크래핑

- 웹에서 데이터를 자동으로 가져와서 활용하는 기술

- 뉴스, 쇼핑몰, 날씨 정보 등을 수집하는 데 활용

- import requests # 웹페이지에 요청을 보내고 html을 가져옴

- from bs4 import BeautifulSoup # 가져온 html을 분석하고 필요한 데이터를 추출

예시

import requests
from bs4 import BeautifulSoup

url = "https://example.com"
response = requests.get(url)
print(response.status_code) # 응답 코드 300 정상
print(response.text[:500]) # 일부 출력
soup = BeautifulSoup(response.text, "html.parser")

# 첫 번째 <h1> 태그 가져오기
header = soup.find("h1")
print(header.text)

# # 특정 클래스(.title)를 가진 첫 번째 요소 가져오기
# title = soup.find("div", class_="title")
# print(title.text)

# # 특정 ID를 가진 요소 가져오기
# content = soup.find("div", id="content")
# print(content.text)