Python 기초집LESSON 19
JSON·CSV 데이터 읽기와 저장
난이도입문
예상 시간30분
선수지식이전 강의
19강. JSON·CSV 데이터 읽기와 저장
1. 이번 강의에서 해결할 문제
로그 제공처마다 JSON 또는 CSV를 사용할 수 있습니다. 분석 로직을 중복하지 않도록 입력 형식만 변환하고 공통 모델을 반환합니다.
2. 학습 목표
3. 핵심 개념
JSON은 중첩된 객체·배열을 표현하고 CSV는 행과 열 중심의 평면 데이터에 적합합니다. json.load와 csv.DictReader가 Python 구조를 만들지만 스키마나 숫자형 검증은 애플리케이션 책임입니다.
4. 단계별 코드 예시
파일 경로: C:\dev\game-log-analyzer\battle_analyzer\readers.py
battle_analyzer/readers.py
import csv
import json
from pathlib import Path
from .models import BattleRecord
def record_from_dict(row: dict[str, object]) -> BattleRecord:
return BattleRecord(
player=str(row["player"]),
monster=str(row["monster"]),
skill=str(row["skill"]),
damage=int(row["damage"]),
result=str(row["result"]),
)
def read_json(path: Path) -> list[BattleRecord]:
with path.open(encoding="utf-8") as file:
return [record_from_dict(row) for row in json.load(file)]
def read_csv(path: Path) -> list[BattleRecord]:
with path.open(encoding="utf-8", newline="") as file:
return [record_from_dict(row) for row in csv.DictReader(file)]
실행 명령:
PowerShell
.\.venv\Scripts\python.exe -c "from pathlib import Path; from battle_analyzer.readers import read_json; print(read_json(Path('data/battles.json')))"
5. 코드가 동작하는 이유
상대 import는 같은 패키지의 모델을 가져옵니다. JSON 숫자는 int로 올 수 있지만 CSV 셀은 문자열이므로 공통 변환 함수가 자료형을 정규화합니다. CSV 파일은 공식 권장대로 newline=""로 엽니다.
6. 자주 하는 실수와 해결법
7. 직접 실습
8. 이해 점검 질문 3개
9. 핵심 요약
MINI QUIZ
0 / 2JSON·CSV 데이터 읽기와 저장 미니 퀴즈
선택 즉시 정답과 해설을 확인할 수 있습니다. 결과는 이 브라우저에만 저장됩니다.
LESSON STATUS
19강. JSON·CSV 데이터 읽기와 저장 미완료 상태학습을 마쳤나요?
직접 실습과 점검 질문까지 확인한 뒤 완료로 표시하세요.