C
Python/파일/Lesson 24

pathlib — 모던 파일 경로 (PEP 428)

15분·theory
이 챕터
2/2

pathlib — 모던 파일 경로 (PEP 428)

🎯 이 lesson 을 읽고 나면

이 lesson 을 다 읽고 나면 아래 3가지를 자신 있게 할 수 있습니다.

  • ✅ pathlib.Path 가 os.path 의 모던 대체
  • ✅ with open() 컨텍스트 매니저 + 인코딩 명시
  • ✅ csv · json · yaml 표준 모듈 사용

학습 목표를 체크리스트로 두고 다 답할 수 있게 되면 lesson 을 닫으세요.

pathlib — 코드 + 실행 결과

pathlib.Path = OS 무관 경로 처리. Python 3.6+ 표준. os.path 옛 방식.


1. 경로 만들기

python
from pathlib import Path

p = Path("data") / "user.json"
print(p)             # data\user.json (Win) or data/user.json (Mac)
print(type(p))       # <class 'pathlib.WindowsPath'> 또는 PosixPath

/ 연산자로 경로 결합 — OS 별 구분자 자동.


2. 정보 추출

python
p = Path("/home/user/photo.jpg")

print(p.name)        # photo.jpg
print(p.stem)        # photo
print(p.suffix)      # .jpg
print(p.parent)      # /home/user
print(p.parts)       # ('/', 'home', 'user', 'photo.jpg')

3. 파일 작업

python
p = Path("memo.txt")

# 존재 확인
if p.exists():
    print("있음")

# 한 줄로 쓰기·읽기
p.write_text("안녕!", encoding="utf-8")
내용 = p.read_text(encoding="utf-8")

# 정보
print(p.is_file())       # True
print(p.is_dir())        # False
print(p.stat().st_size)  # 파일 크기 (byte)

4. 디렉터리 작업

python
# 폴더 생성
Path("data").mkdir(exist_ok=True)

# 폴더 안 모든 파일
for 파일 in Path("data").iterdir():
    print(파일)

# 패턴 매칭 (glob)
for img in Path("photos").glob("*.jpg"):
    print(img)

# 재귀 — 하위 폴더까지
for py in Path(".").rglob("*.py"):
    print(py)

5. os.path 와 비교

python
# ❌ 옛 방식 (os.path)
import os
경로 = os.path.join("data", "subdir", "file.txt")
확장자 = os.path.splitext(경로)[1]
os.makedirs("data/subdir", exist_ok=True)

# ✅ pathlib
경로 = Path("data") / "subdir" / "file.txt"
확장자 = 경로.suffix
Path("data/subdir").mkdir(parents=True, exist_ok=True)

한 줄 요약

Path(...) / "..." + .read_text() + .glob() 3개면 90%. os.path 졸업.

🐍 실행해보기 — pathlib — 직접 실행

위 개념을 실제로 코드로 실행해보세요. 값을 바꿔가며 어떻게 동작하는지 직접 확인하는 게 가장 빠른 학습.
✏️ Python 코드
📟 콘솔 출력
▶ 실행 버튼을 눌러보세요
🐍 Pyodide로 실제 Python 실행 — 첫 실행 시 로딩 3~5초 소요

🤖 AI 에게 이렇게 요청해보세요

이 lesson 의 개념을 알면 AI 에게 구체적으로 지시할 수 있습니다. 막연한 "고쳐줘" 가 아니라 어휘를 가진 요청 — 그게 토큰 절약의 출발점입니다.

  • "이 os.path 코드를 pathlib 로 마이그레이션해줘"
  • "이 with open 블록에 적절한 인코딩 (encoding='utf-8') 명시해줘"

왜 이게 토큰을 줄이나

개념을 모를 땐 AI 답변을 받고도 "그게 뭐예요?" 를 다시 물어야 합니다. 그 "다시 물음" 이 토큰을 잡아먹습니다. 개념 한 번 익혀두면 대화가 한 번에 끝납니다.

먼저 읽으면 좋은 개념: 파일 입출력
다음 추천: FastAPI 입문
pathlib — 모던 파일 경로 (PEP 428) - Python