pickle

문건희·2025년 8월 30일
import pickle
  • 파이썬 객체를 직렬화(serialize)/ 역직렬화(deserialize) 하는 표준 모듈을 불러옵니다.
  • 직렬화 = 메모리 속 객체를 바이트(byte) 형태로 변환해 파일 등에 저장할 수 있게 만드는 것.
# 결과를 pickle 파일로 저장
with open('chunks_baseline.pkl', 'wb') as f:
  • 'chunks_baseline.pkl'이라는 파일을 쓰기 모드로(binary) 엽니다.

    • 'wb': write + binary (피클은 텍스트가 아니라 바이너리라서 b 필수)
  • with ... as f: 컨텍스트 매니저: 블록이 끝나면 자동으로 파일을 닫아줍니다(에러가 나도 안전하게 닫힘).

    pickle.dump(chunks, f)
  • 메모리에 있는 chunks 객체를 피클 형식으로 파일 f에 저장합니다.

  • chunks는 미리 만들어져 있어야 합니다(없으면 NameError).

  • 프로토콜은 기본값(파이썬 버전에 따라 달라짐)이 사용됩니다. 더 빠르고 작은 최신 포맷을 원하면:

    pickle.dump(chunks, f, protocol=pickle.HIGHEST_PROTOCOL)
print("✅ 'chunks_baseline.pkl' 파일로 저장 완료!")
  • 저장이 끝났음을 콘솔에 출력.

추가 팁

불러오는 방법(역직렬화)

import pickle

with open('chunks_baseline.pkl', 'rb') as f:
    chunks_loaded = pickle.load(f)

print(type(chunks_loaded), len(chunks_loaded) if hasattr(chunks_loaded, '__len__') else 'no len')

경로/위치

  • 파일은 현재 작업 디렉토리에 저장됩니다. 위치가 헷갈리면:

    import os
    print(os.getcwd())

보안 주의

  • 신뢰할 수 없는 소스에서 받은 .pkl을 pickle.load로 열지 마세요. 임의 코드가 실행될 수 있습니다.

용량이 큰 경우 압축 저장

import gzip, pickle
with gzip.open('chunks_baseline.pkl.gz', 'wb') as f:
    pickle.dump(chunks, f, protocol=pickle.HIGHEST_PROTOCOL)

with gzip.open('chunks_baseline.pkl.gz', 'rb') as f:
    chunks_loaded = pickle.load(f)

호환성

  • 피클은 파이썬 전용 포맷입니다(다른 언어와 호환 X, 사람이 읽기 어려움).
  • 교차 언어/사람 가독성이 필요하면 JSON/CSV 등을 검토하세요(단, 복잡한 파이썬 객체는 JSON으로 바로 저장하기 어려울 수 있음).

0개의 댓글