수업 목표
- 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)
'ROKEY' 카테고리의 다른 글
[20250212] 데브옵스 (DevOps) - DBMS 1 (1) | 2025.02.13 |
---|---|
[20250211] 파이썬 프로그래밍 - Python 활용 심화 2 (1) | 2025.02.13 |
[20250207] 파이썬 프로그래밍 - 딥러닝 파이썬 패키지 3 (0) | 2025.02.09 |
[20250206] 파이썬 프로그래밍 - 딥러닝 파이썬 패키지 2 (0) | 2025.02.06 |
[20250205] 파이썬 프로그래밍 - 딥러닝 파이썬 패키지 1 (1) | 2025.02.06 |