파이썬의 pickle(피클) 패키지는 list, dict와 같은 파이썬 객체를 그 형태 그대로 저장하고, 불러올 수 있게끔 하는 패키지입니다. pickle을 이용해 저장된 객체 파일의 확장자도 .pickle 입니다.
다양한 파이썬 객체들을 그대로 저장했다가, 그대로 불러올 수 있다는 대단히 편리한 장점을 가집니다.
물론, 몇십 기가바이트에 이르는 대용량 객체의 경우 저장하는 도중에 메모리 부족을 일으켜 실행이 중단되거나(* 이 문제는 프로토콜 인수 설정을 통해서 어느정도 해결할 수 있습니다.), 실행이 끝나기까지 오랜 시간이 걸릴 수도 있습니다.
하지만 그럼에도 불구하고 피클 객체는 굉장히 편리한 작업을 가능하게 해 줍니다.
객체를 파일로 저장하기(파일 쓰기)
- 파일 이름에는 상대경로를 쓸 수도 있지만, 절대경로를 사용해야 할 경우에는 파일 경로까지(예 : C:/폴더1/폴더2/...) 포함하여 입력해 주어야 합니다.
import pickle
with open(file='파일A.pickle', mode='wb') as f:
pickle.dump(객체A, f)
picke.load()는 컴퓨터에 저장되어 있는 피클 파일(.pickle 확장자)을 파이썬 내에 객체로 불러와 줍니다.
파일B.pickle을 불러와 파이썬 내에서 '객체B'라는 객체로 할당해 주는 역할을 합니다.
파일B.pickle에 저장된 것이 list이면 list, dict면 dict, 문자면 문자 그대로가 불러와 객체로 할당되는 것을 확인할 수 있을 것입니다.
with open(file='파일B.pickle', mode='rb') as f:
객체B=pickle.load(f)
pickle.dump()를 사용하여 객체를 피클 파일로 저장할 때, 간혹 한참 실행되던 중 메모리가 부족해져 나머지 작업 실행이 중단되고 파일이 제대로 저장이 되지 않을 때가 있습니다. 이 때 사용할 수 있는 것이 protocol=pickle.HIGHEST_PROTOCOL 인수 설정입니다.
with open('파일A.pickle', 'wb') as fw:
pickle.dump(객체A, fw, protocol=pickle.HIGHEST_PROTOCOL)