-
[python] picklepython 2025. 5. 27. 13:30
pickle
pickle은 파이썬 객체를 파일로 저장하거나 다시 불러올 수 있게 해주는 모듈입니다.
즉, 파이썬 객체를 직렬화(serialize)하거나 역직렬화(deserialize) 하는 데 사용됩니다.
🧠 쉽게 말하면?
- 직렬화 (Serialization):
파이썬 객체(예: 리스트, 딕셔너리, 클래스 인스턴스 등)를 파일에 저장하거나 네트워크 전송할 수 있는 형태로 변환하는 것. - 역직렬화 (Deserialization):
저장된 데이터를 다시 원래의 파이썬 객체로 복원하는 것.
📦 pickle 주요 함수
pickle.dump(obj, file) 객체를 직렬화하여 파일에 저장 pickle.load(file) 파일에서 객체를 역직렬화하여 로드 pickle.dumps(obj) 객체를 바이트 데이터로 직렬화 (파일 저장 없이) pickle.loads(bytes) 바이트 데이터를 객체로 역직렬화 ✅ 예제
객체를 파일로 저장
import pickle data = {"name": "Alice", "age": 25, "hobby": ["reading", "coding"]} with open("data.pickle", "wb") as f: pickle.dump(data, f)
파일에서 객체 불러오기
import pickle with open("data.pickle", "rb") as f: loaded_data = pickle.load(f) print(loaded_data) # {'name': 'Alice', 'age': 25, 'hobby': ['reading', 'coding']}
💡 pickle vs json
형식 바이너리 텍스트 저장 대상 거의 모든 파이썬 객체 문자열, 숫자, 리스트, 딕셔너리 호환성 파이썬 전용 다양한 언어에서 사용 가능 사용 예 파이썬 내부 데이터 저장 웹 API, 설정 파일 ⚠️ 주의: 보안 이슈
pickle.load()는 신뢰할 수 없는 소스의 파일을 절대 읽으면 안 됩니다. 악성 코드가 포함될 수 있습니다.
실습
# 직렬화
import pickle profile_file = open("profile.pickle", "wb") profile = {"이름":"박명수", "나이":30, "취미":["축구", "골프", "코딩"]} print(profile) pickle.dump(profile, profile_file) # profile에 있는 정보를 file에 저장 profile_file.close()
{'이름': '박명수', '나이': 30, '취미': ['축구', '골프', '코딩']}
해당 파일에도 저장되었다.
# 역직렬화
import pickle profile_file = open("profile.pickle", "rb") profile = pickle.load(profile_file) # file에 있는 정보를 profile에 불러오기 print(profile) profile_file.close()
{'이름': '박명수', '나이': 30, '취미': ['축구', '골프', '코딩']}
'python' 카테고리의 다른 글
[python] 클래스 (0) 2025.05.28 [python] with (1) 2025.05.27 [python] 파일 입출력 (0) 2025.05.27 [python] 표준 입출력 (0) 2025.05.27 [python] 지역변수와 전역변수 (0) 2025.05.26 - 직렬화 (Serialization):