티스토리 툴바

파이썬(Python) - 피클링(Pickling)

파이썬 | 2012/03/05 22:12
Posted by 앙꾸

피클(pickle) - 파이썬에서 제공하는 표준 라이브러리

작성하거나 수정한 데이터를 파일에 피클링하면 데이터를 잃어버리지 않고, 다른 프로그램이 읽을 수도 있습니다.

결국, 데이터를 파일에 피클링 한다는 말은 데이터를 디스크에 저장, 혹은 다른 곳으로 전송하는 것입니다.
또한, 이미 피클링 되어 있는 데이터를 파일에서 꺼내서 파이썬 메모리에 있는 원래의 형태로 출력할 수도 있습니다.

- 피클링 - 영구 저장소에 데이터 객체를 저장하는 처리
- 언피클링 - 영구 저장소에 저장된 데이터 객체를 읽어 오는 처리

파일을 저장하고, 읽어오는 방법에 대해서 알아보겠습니다.


< dump / load >

피클을 사용하기 위해, 먼저 피클 모듈을 임포트합니다.
그리고, dump() 메서드를 사용하여 피클링하고, load() 메서드를 사용하여 언피클링 합니다.

여기서 주의할 점!
피클로 작업을 할 때에는 파일을 '이진 접근 모드'로 열어야 한다.


 



(위 코드는 앞의 포스팅들에서 계속 다루던 코드를 수정했습니다.)

피클 모듈을 임포트하고, with문으로 새로운 텍스트 파일을 생성합니다.
이때, 'w'가 아니라 'wb'를 입력합니다. 여기서 b가 이 파일을 '이진 접근 모드'로 연다는 의미입니다.
dump() 메서드를 사용하여 저장합니다.

작업 디렉터리를 열어보면 각각 'man_data.txt'와 'other_data.txt'라는 이름으로 저장된 파일이 생겼을 겁니다.
파일을 열어보면 이상한 글이 저장되어있습니다.
파이썬이 자신의 고유한 형식( 이진 형식, 프로토콜이라 함)으로 저장해서 그렇습니다.



이 파일을 load() 메서드를 사용하여 불러옵니다.



먼저 피클링 된 데이터를 불러와서 담을 새로운 식별자( 빈 리스트 )를 생성합니다.
두개 다 불러오기 위해 각각 만들어줍니다.

dump() 메서드를 사용할 때 처럼 with문에 open() 내장 함수 두개를 콤마로 구분하여 입력합니다.
이번에도 '이진 접근 모드'로 하기 위해 'r'이 아닌 'rb'로 입력합니다.

위에서 만든 새 식별자에 load() 메서드를 사용하여 피클링 된 데이터를 입력합니다.
식별자를 출력합니다.

아래는 출력화면입니다.



지저분하지만 정상적으로 출력됩니다.

피클링하는 코드를 살짝 수정하면, 파일을 한줄씩 보기좋게 저장할 수 있습니다.
그렇게 저장한 파일은 지금보다 보기 좋게 출력될것입니다...



저작자 표시 비영리 변경 금지


블로그 이미지

앙꾸

카테고리

분류 전체보기 (22)
파이썬 (13)
HTML5 (7)
하드웨어 (1)
ETC (1)