pickle : 텍스트 상태의 데이터가 아닌 파이썬 객체 자체를 파일로 저장하는 것
왜 사용하는 걸까?
만약 우리가 10GB 짜리 raw text 파일을 파싱하여 필요한 부분을 빼내서 사용한다고 해봅시다.
raw text 에 있는 내용을 프로그램을 돌릴 때 마다 파싱하여 필요한 부분을 뺀다면 비효율 적이겠죠? 그래서 미리 필요한 부분을 딕셔너리 던, 리스트 던, 튜플 이던 저장을 해놓는 것 입니다.
근데 문자열이 아닌 객체를 파일에 쓸 수 없기에, pickle 모듈을 활용해 그 객체 자체를 바이너리로 저장하는 것 입니다.
바이너리 파일이란?
사용자 또는 프로그램이 사용하던 정보나 숫자 값을 특별한 가공 없이 그대로 파일에 저장
pickle의 사용법
pickle.dump(객체, 파일) 로 저장하고
pickle.load(파일) 로 로딩
import pickle
my_list = ['a','b','c']
## Save pickle
with open("data.pickle","wb") as fw:
pickle.dump(my_list, fw)
## Load pickle
with open("data.pickle","rb") as fr:
data = pickle.load(fr)
print(data)
#['a', 'b', 'c']
객체 저장
import pickle
my_list = ['this', 'is', 'my', 'list']
with open('my_data.pickle', 'wb') as f:
pickle.dump(my_list, f)
객체 로드
import pickle
with open('my_data.pickle', 'rb') as f:
my_list = pickle.load( f)
print(my_list)
# ['this', 'is', 'my', 'list']