728x90
파이썬에서는 객체를 저장하거나 전송하기 위해 pickle
과 json
두 가지 주요 직렬화 방법을 사용할 수 있습니다. 두 방식 모두 데이터를 텍스트나 바이너리 형태로 변환할 수 있지만, 용도와 특성이 서로 다릅니다.
● JSON의 특징
- 텍스트 기반 (UTF-8 인코딩)
- 사람이 읽기 쉬움
- 언어 독립적: JavaScript, Java, C++, R 등 다양한 언어에서 사용 가능
- 기본 자료형만 지원 (list, dict, int, float, str, bool, None)
import json
data = {"name": "Alice", "age": 30}
with open("data.json", "w", encoding="utf-8") as f:
json.dump(data, f)
JSON은 웹 통신, 설정 파일 등 범용 데이터 교환 포맷으로 적합합니다.
● pickle의 특징
- 바이너리 포맷
- 사람이 읽을 수 없음
- 파이썬 전용 (다른 언어와 호환되지 않음)
- 모든 파이썬 객체 직렬화 가능 (클래스, 함수, 사용자 객체 등)
import pickle
with open("data.pkl", "wb") as f:
pickle.dump(data, f)
pickle은 머신러닝 모델 저장, 캐시, 임시 데이터 저장 등에 적합합니다.
● 비교 정리
항목 | JSON | pickle |
---|---|---|
포맷 | 텍스트 | 바이너리 |
호환성 | 언어 독립 | 파이썬 전용 |
가독성 | 사람이 읽을 수 있음 | 읽을 수 없음 |
지원 타입 | 기본 타입만 | 모든 객체 |
보안 | 비교적 안전 | load 사용 시 보안 위험 |
● 마무리
JSON은 범용 데이터 교환에 적합하고, pickle은 파이썬 내부에서만 사용하는 객체 저장에 적합합니다. 사용 목적에 따라 적절한 포맷을 선택하고, 특히 pickle을 사용할 때는 보안에 주의해야 합니다.
728x90
'프로그래밍언어 > 파이썬[중급]' 카테고리의 다른 글
[파이썬][중급] Chapter46. 데이터 클래스와 필드 설정 (dataclasses) (0) | 2025.05.25 |
---|---|
[파이썬][중급] Chapter45. CSV 파일과 pandas의 통합 활용 (0) | 2025.05.24 |
[파이썬][중급] Chapter43. pickle을 활용한 객체 직렬화 (0) | 2025.05.24 |
[파이썬][중급] Chapter42. subprocess로 외부 명령 실행 (0) | 2025.05.24 |
[파이썬][중급] Chapter41. 압축 파일 처리 (zipfile, tarfile) (0) | 2025.05.24 |