파이썬 pickle 라이브러리: 파이썬 객체의 직렬화와 역직렬화

파이썬 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)을 사용하는 것이 좋습니다.

참고 자료

함께 보면 좋은 이전 게시글

위로 스크롤