상황: 공모전에서 주어진 데이터가 pkl 확장자로 되어 있다. 이 파일을 열어서 데이터의 형태와 칼럼을 확인해야 한다.
피클(pickle) 파일은 파이썬에서 제공하는 객체 저장 모듈이다. 텍스트 상태의 데이터가 아닌 파이썬 객체 자체를 바이너리 파일로 저장하는 것을 의미한다.
파이썬 공식 문서에 의하면,
파이썬의 객체 구조가 바이트 스트림(byte stream)으로 변환되는 과정을 '피클링(pickling)'이라고 하며, 그 반대의 과정을 '언피클링(unpickling)'이라고 부른다. 피클링은 "serialization", "marshalling", 또는 "flattening"이라고 부르기도 한다.
한 마디로 피클링과 언피클링은 파이썬의 객체를 저장하거나 전송하기 쉽게 바꾸는 과정이다.
*여기서 바이트 스트림(byte stream)은 데이터를 연속적인 바이트(byte)의 형태로 전달하는 데이터 스트림을 의미한다. 즉, 일련의 0과 1로 이루어진 연속적인 데이터 흐름이다. (1byte=8bit, 1byte는 0에서 255까지의 값을 가질 수 있는데, 이유는 아래 그림 참고)

dump와 load 함수를 사용해서 pkl파일을 저장하고 불러올 수 있다.
a = [1,2,3]
# pkl 파일 저장
with open('test.pkl', 'wb') as f:
pickle.dump(a, f)
# pkl 파일 불러오기
with open('test.pkl', 'rb') as f:
b = pickle.load(f)
with open ~ as ~ : 파일 작업이 끝났을 때 자동으로 파일을 닫을 수 있도록 해 준다. 이를 통해 파일이 열려있는 상태로 남아있는 문제를 방지할 수 있다.
wb: 쓰기 모드(write binary). 파일을 쓰기 전용으로 열고, binary 형식으로 데이터를 저장하겠다는 뜻 -> 피클 파일 저장할 때 사용
rb: 읽기 모드(read binary). 파일을 읽기 전용으로 열고, binary 형식으로 데이터를 읽겠다는 뜻 -> 피클 파일 불러올 때 사용