파이썬 pickle 라이브러리: 파이썬 객체의 직렬화와 역직렬화
파이썬 표준 라이브러리 중 하나인 pickle은 파이썬 객체를 직렬화하고 역직렬화하는 데 사용됩니다. 이 글에서는 pickle의 사용법에 대해 알아보겠습니다.
1. 파이썬 pickle 이란?
파이썬 pickle 라이브러리는 파이썬 객체 구조를 직렬화하고 역직렬화하는 프로세스를 지원합니다. 직렬화란 복잡한 객체 구조를 바이트 스트림으로 변환하는 과정이며, 역직렬화는 이 바이트 스트림을 다시 원래의 객체 구조로 복원하는 과정입니다. pickle 라이브러리를 이용하면 데이터의 휘발성을 방지하고, 객체의 지속성을 보장할 수 있습니다.
2. pickle 사용하기: 직렬화
파이썬 pickle 라이브러리를 사용해 객체를 직렬화하는 방법을 살펴보겠습니다. ‘pickle.dump()’ 함수를 사용하면 파이썬 객체를 파일로 저장할 수 있습니다.
▼pickle.dump() 예제 코드
# pickle 라이브러리를 임포트합니다.
import pickle
# 직렬화하려는 데이터를 정의합니다. 이 경우 딕셔너리 형태의 데이터입니다.
data = {
"name": "BlueShare",
"age": 20,
"gender": "man",
"city": "Seoul"
}
# 'data.pkl'이라는 파일을 쓰기 이진 모드(wb)로 엽니다.
with open("data.pkl", "wb") as f:
# pickle의 dump 메서드를 사용하여 data를 f 파일에 직렬화하고 저장합니다.
pickle.dump(data, f)
위의 코드는 파이썬의 pickle 라이브러리를 사용하여 딕셔너리 객체를 직렬화하고 이를 “data.pkl” 파일에 저장합니다.
3. pickle 사용하기: 역직렬화
이제 저장한 파일에서 데이터를 불러오는 방법, 즉 역직렬화하는 방법을 알아보겠습니다. ‘pickle.load()’ 함수를 사용하면 저장된 객체를 불러올 수 있습니다.
▼ ‘pickle.load() 예제 코드
import pickle
# 'data.pkl' 파일을 읽기 이진 모드(rb)로 엽니다.
with open("data.pkl", "rb") as f:
# pickle의 load 메서드를 사용하여 파일의 내용을 역직렬화합니다.
data = pickle.load(f)
# 역직렬화한 데이터를 출력합니다.
print(data) # 출력: {'name': 'BlueShare', 'age': 20, 'gender': 'man', 'city': 'Seoul'}
위의 코드를 실행하면, data.pkl 파일에 저장된 데이터를 역직렬화하여 출력할 수 있습니다. 이 방법을 통해 pickle로 저장된 데이터의 내용을 확인할 수 있습니다.
4. pickle의 제한 및 주의 사항
pickle은 매우 유용하지만, 모든 상황에서 사용하기 적합한 것은 아닙니다. pickle로 직렬화된 데이터는 파이썬 버전이나 플랫폼에 의존적일 수 있습니다. 또한, pickle은 보안 측면에서 취약한 점이 있으므로 신뢰할 수 없는 소스에서 pickle 데이터를 역직렬화하는 것은 위험할 수 있습니다. 이는 pickle 데이터를 역직렬화할 때, 임의의 코드가 실행될 수 있기 때문입니다. 따라서 pickle을 사용할 때는 신뢰할 수 있는 소스에서만 데이터를 역직렬화하고, 가능하면 다른 데이터 교환 형식(예: JSON, XML)을 사용하는 것이 좋습니다.
참고 자료
- 파이썬 공식 문서: pickle 라이브러리 (https://docs.python.org/ko/3/library/pickle.html)
함께 보면 좋은 이전 게시글
- 파이썬 파일 처리 방법: 파일 생성 및 읽기와 쓰기
- 파이썬 프로그램의 입력과 출력: 파일 IO, 명령행 인자 처리
- 파이썬 클래스와 객체: 상속, 생성자, 메서드 오버라이딩 사용하기
- 파이썬 모듈: 생성, 임포트, sys.path, PYTHONPATH 환경 변수
- 파이썬 패키지: 생성과 사용방법
이 글이 도움이 되셨다면 공유를 부탁 드립니다. 다음 글에서 뵙겠습니다!