본문으로 건너뛰기
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 미완료 상태