본문으로 건너뛰기
Python 기초집LESSON 13

파일 읽기·쓰기와 pathlib

난이도입문
예상 시간30분
선수지식이전 강의

13강. 파일 읽기·쓰기와 pathlib

1. 이번 강의에서 해결할 문제

코드 안에 데이터를 직접 적으면 실제 파일을 분석할 수 없습니다. Windows 경로를 안전하게 조합하고 인코딩을 명시해 로그를 읽고 결과를 저장합니다.

2. 학습 목표

3. 핵심 개념

pathlib.Path는 경로 문자열보다 결합, 확장자, 존재 검사 의도가 명확합니다. with 블록은 정상·오류 종료 모두 파일을 닫습니다. 인코딩을 생략하면 환경별 기본값이 달라질 수 있어 utf-8을 명시합니다.

4. 단계별 코드 예시

파일 경로: C:\dev\game-log-analyzer\data\battles.txt

data/battles.txt
Knight|Slime|Slash|80|win
Mage|Dragon|Fireball|220|loss
Knight|Goblin|Slash|120|win

파일 경로: C:\dev\game-log-analyzer\main.py

main.py
from pathlib import Path

PROJECT_ROOT = Path(__file__).resolve().parent
input_path = PROJECT_ROOT / "data" / "battles.txt"
output_path = PROJECT_ROOT / "reports" / "summary.txt"

with input_path.open("r", encoding="utf-8") as file:
lines = [line.strip() for line in file if line.strip()]

output_path.parent.mkdir(parents=True, exist_ok=True)
output_path.write_text(
f"전투 횟수: {len(lines)}\n",
encoding="utf-8",
)
print(output_path)
PowerShell · 실행
New-Item -ItemType Directory -Force .\data
py -3.13 .\main.py
Get-Content .\reports\summary.txt

5. 코드가 동작하는 이유

__file__ 기준 절대 경로를 사용하므로 실행 위치가 달라도 프로젝트 파일을 찾습니다. mkdir(parents=True, exist_ok=True)는 상위 폴더까지 만들고 이미 있어도 실패하지 않습니다. write_text는 파일을 쓰고 닫는 편의 메서드입니다.

6. 자주 하는 실수와 해결법

7. 직접 실습

8. 이해 점검 질문 3개

9. 핵심 요약

MINI QUIZ

파일 읽기·쓰기와 pathlib 미니 퀴즈

선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.

0 / 2
  1. 문제 1“파일 읽기·쓰기와 pathlib” 작업 전 검토에서 채택해야 할 안전 기준은 무엇인가요?
  2. 문제 2“파일 읽기·쓰기와 pathlib”의 작업 기준으로 ‘인코딩 생략’을 진단하거나 바로잡은 선택은 무엇인가요?
LESSON STATUS

학습을 마쳤나요?

직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.

13강. 파일 읽기·쓰기와 pathlib 미완료 상태