파이썬 팁: 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를 여러번 실행하여 객체 로딩