3. 파이썬 전용 수축 광선 총: pickle 모듈

struct는 엄청 작고 효율적이게 C언어 기계들과 대화하는 용도라면, 파이썬이 독자적으로 만든 궁극의 수축 광선 총이 있습니다. 바로 pickle (피클) 모듈입니다.

오직 다른 파이썬 프로그램들과 교류할 때만 쓰는 마법인데, 딕셔너리, 리스트 심지어 여러분이 만든 복잡한 몬스터 ‘클래스 객체’까지 그 모습 그대로 피클(절임 병)에 쏙 담아서 파일로 저장해버릴 수 있습니다!

이를 직렬화(Serialization)라고 부릅니다.


3.1 얍! 피클로 얼려서 보관하기 (덤프, Dump)

복잡한 데이터 꾸러미를 바이트 코드로 수축시켜 디스크 창고에 던져 넣는 마법은 dump 라고 합니다.

import pickle

# 복잡한 파이썬 전용 데이터 덩어리
my_bag = {
    'name': '멋진 기사',
    'level': 99,
    'items': ['전설의 검', '물약', '갑옷']
}

# 피클 보관용 병(파일)을 바이트 쓰기('wb') 모드로 엽니다.
with open("save_data.pkl", "wb") as f:
    # 수축 광선총 발사! 객체를 병 f 에 완전히 던져(dump) 넣습니다.
    pickle.dump(my_bag, f)

print("서랍 속에 안전하게 세이브 완료!")

3.2 봉인 해제! 원래 모습으로 되돌리기 (로드, Load)

저장해둔 세이브 파일을 불러와 원래의 파이썬 객체로 소환(봉인 해제)하는 마법은 load 입니다.

import pickle

# 피클 병(파일)을 바이트 읽기('rb') 모드로 엽니다.
with open("save_data.pkl", "rb") as f:
    # 짠! 파일 안의 바이트들을 원래 객체로 통째로 부활시킵니다!
    loaded_bag = pickle.load(f)

print("로드된 데이터:")
print("이름:", loaded_bag['name'])
print("가진 아이템:", loaded_bag['items'])

인터넷 너머로 다른 파이썬 컴퓨터에 데이터를 고스란히 쏴주거나, 머신러닝의 어마어마한 학습 결과(가중치)들을 세이브하고 로드할 때 이 pickle 광선총은 파이썬 최고 존엄의 무기가 된답니다!

서브목차