파이썬 팁: pickle 모듈로 객체 저장

pickle 모듈은 파이썬 객체를 파일로 저장하고 로딩하는 기능을 제공합니다.

pickle 모델 함수

  • dump(object, file, protocol)
  • load(file)

파이썬 객체 저장

파이썬 객체 저장시 pickle 모듈이 dump 함수를 사용합니다.

import pickle

list = [1, 2, 3, 4, 5]
with open('list.pkl', 'wb') as f:
    pickle.dump(l, f)
$ ls -al *.pkl

-rw-r--r-- 1 root root 34  6월  2 13:10 list.pkl

pickle 파일 로딩

with open('./list.pkl', 'rb') as f:
    list2 = pickle.load(f)

print(list2)
print(list==list2)
[1, 2, 3, 4, 5]
True

한개 파일에 여러 객체 저장

한 개 파일에 dump 함수를 여러번 실행하여 여러 객체를 여러 객체를 저장할 수 있습니다. 파일에서 파이썬 객체를 로딩할 때는 load 함수를 저장된 객체 수 만큼 실행해야 합니다.

  • 객체 저장
import pickle

objs = [{'name':'taewan'}, {'name':'sunny'}, {'name':'minsu'}]
with open('./objects.pkl', 'wb') as f:
    for a in objs:
        pickle.dump(a, f)
  • pickle 파일 로딩
import pickle

data_list = []

with open('./objects.pkl', 'rb') as f:
    while True:
        try:
            data = pickle.load(f)
        except EOFError:
            break
        data_list.append(data)

print(data_list)
print(data_list==objs)
[{'name': 'taewan'}, {'name': 'sunny'}, {'name': 'minsu'}]
True

주의 할 점

  • pickle로 생성한 파일은 Cross-Platform
  • 다른 Python 버전 사이에서는 호환성에 문제가 발생할 수 있음
  • 하나의 파일에 dump를 여러번 실행하여 여러 객체를 저장할 수 있음
  • 여러 객체가 저장된 pkl파일에 load를 여러번 실행하여 객체 로딩