[Python] Pickle

2024. 11. 26. 22:42·코딩/노트

Pickle

`Python`으로 작업을 하다보면, 종종 저장하기 애매한 `object`가 있습니다. 예를들어, 딕셔너리 정보를 저장하려 할 때, 데이터프레임으로 바꾸어 `.csv`로 저장해야 할 때가 그렇습니다. 이때 주로 사용하는 저장 방식이 `Pickle` 입니다. 이 모듈을 사용하면 특정 자료를 객체 구조 그대로 유지하며 저장 및 불러오기가 가능합니다. 

 

저장하는 과정을 `pickling`(또는 `serialization`, `marshalling` ...), 반대로 불러오는 과정을 `unpickling`이라고 합니다. 저장 과정이 `seialization` 직렬화 라고 불리는 이유는 오브젝트의 정보를 `Byte Stream`(정보를 연속적인 `0`과 `1`로 이진화 시켜 저장)으로 저장하기 때문입니다. 이를 통해 파일화된 객체를 주고 받을 수 있으며, 역직렬화로 원래의 객체를 복원할 수 있게 합니다. 추가로 `marshalling`은 `pickle` 이전의 `marshal`이라는 원시적인 직렬화 모듈에서 기인한 용어입니다. 이 모듈은 `.pyc`라는 파일 형식을 지원한다고 합니다.$^{[1]}$

Code

실제로 사용하는 방식으로는 읽고 쓰는 두가지만 정확히 알면 됩니다.

 

먼저 패키지를 불러옵니다.

import pickle

저장

저장 같은 경우 `pickle.dump()`와, binary를 write한다는 `wb`옵션을 이용하면 됩니다.

f = open('파일A.pickle', 'wb')
pickle.dump(객체A, f)
f.close()

보다 깔끔한 코드와, `close()`를 잊어먹을 수 있기때문에, 아래와 같이 `with`을 사용합니다.

with open('파일A.pickle', 'wb') as f:
    pickle.dump(객체A, f)

불러오기

불러오기는 `pickle.load()`와 `rb`(read binary) 옵션을 통해 가능합니다. `with`과 함께 쓰이면 아래와 같이 되겠네요.

with open('파일A.pickle', 'rb') as f:
    data = pickle.load(f)

참조

[1] https://docs.python.org/3/library/pickle.html

 

pickle — Python object serialization

Source code: Lib/pickle.py The pickle module implements binary protocols for serializing and de-serializing a Python object structure. “Pickling” is the process whereby a Python object hierarchy is...

docs.python.org

[그림] https://www.datacamp.com/tutorial/pickle-python-tutorial

 

 

 

 

 

'코딩 > 노트' 카테고리의 다른 글

[Function] 순수 함수  (0) 2025.04.07
[Linux] rm  (1) 2024.10.30
[Bash] 다중 스크립트 실행  (0) 2024.10.21
[Python] Type Hint  (0) 2024.08.09
'코딩/노트' 카테고리의 다른 글
  • [Function] 순수 함수
  • [Linux] rm
  • [Bash] 다중 스크립트 실행
  • [Python] Type Hint
CDeo
CDeo
잘 부탁해요 ~.~
  • 링크

    • Inter-link
    • LinkedIn
  • CDeo
    Hello World!
    CDeo
  • 공지사항

    • Inter-link
    • 분류 전체보기 (123)
      • 월간 (1)
        • 2024 (1)
      • 논문참여 (2)
      • 통계 & 머신러닝 (47)
        • 피처 엔지니어링 (2)
        • 최적화 (2)
        • 군집화 (5)
        • 공변량 보정 (4)
        • 생물정보통계 모델 (3)
        • 연합학습 (13)
        • 통계적 머신러닝 (13)
        • 논의 (0)
        • 구현 (2)
        • 스터디 (3)
      • 데이터 엔지니어링 (1)
        • 하둡 (1)
      • 코딩 (26)
        • 웹개발 (1)
        • 시각화 (2)
        • 이슈 (8)
        • 노트 (5)
        • PyTorch Lightning (5)
        • JAX (5)
      • 에너지 (2)
        • 뉴스 및 동향 (2)
        • 용어 정리 (0)
      • 기본 이론 (0)
        • 집합론 (0)
        • 그래프 이론 (0)
      • 약리학 (28)
        • 강의 (5)
        • ADMET parameter (16)
        • DDI (4)
        • DTI (0)
      • 생명과학 (1)
        • 분석기술 (1)
      • 일상 (15)
        • 연구일지 (3)
        • 생각 (8)
        • 영화 (1)
        • 동화책 만들기 (1)
        • 요리 (0)
        • 다이어트 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 인기 글

  • 전체
    오늘
    어제
  • hELLO· Designed By정상우.v4.10.1
CDeo
[Python] Pickle
상단으로

티스토리툴바