Pickle은 Python에서 객체를 직렬화(serialize)하고 역직렬화(deserialize)할 수 있게 해주는 모듈입니다.
직렬화(serialize): Python 객체를 바이트 스트림으로 변환하는 과정이고
역직렬화(deserialize): 이 바이트 스트림을 다시 원래의 Python 객체로 복원하는 과정
이를 통해 Python 객체를 파일로 저장하거나 네트워크를 통해 전달할 수 있습니다.
# 직렬화할 객체 (예: 딕셔너리)
data = {'name': 'Alice', 'age': 25, 'city': 'Wonderland'}
# 파일에 객체 저장하기
with open('data.pkl', 'wb') as file:
pickle.dump(data, file)
# 파일에서 객체 로드하기
with open('data.pkl', 'rb') as file:
loaded_data = pickle.load(file)
print(loaded_data)
pickle.dump(obj, file)
: 객체 obj
를 파일 객체 file
에 저장합니다.
pickle.load(file)
: 파일 객체 file
에서 객체를 읽어서 반환합니다.
pickle.dumps(obj)
: 객체 obj
를 바이트 스트림으로 변환합니다. (파일에 저장하지 않고 메모리에 저장할 때 유용)
pickle.loads(bytes_obj)
: 바이트 스트림 bytes_obj
를 객체로 변환합니다.
pickle을 사용할 때는 신뢰할 수 없는 소스에서 제공된 데이터를 역직렬화하는 것을 피해야 합니다. 공격자가 악의적인 코드를 삽입할 수 있기 때문입니다.
pickle은 Python 객체에만 사용 가능하며, 언어나 플랫폼 간 호환성이 없습니다.
감사합니다