본문 바로가기
Python

[Python] 파이썬 피클(pickle) 모듈 사용법 및 예제

by A6K 2022. 11. 7.

파이썬의 내장 모듈인 '피클(pickle)'은 딕셔너리나 리스트 아니면 다른 클래스 등의 자료형을 별도의 변환없이 그대로 파일로 저장하고 필요할 때 이를 불러다 사용할 수 있는 모듈이다.

파이썬 피클(pickle)

파이썬을 이용해서 데이터를 다룰 때 오래걸리는 처리 작업이 있을 수 있다. 예를 들어서 수십기가짜리 텍스트 파일을 파싱해서 원하는 데이터를 추출하는 경우를 생각해보자. 프로그램이 실행될 때마다 매번 수십기가짜리 텍스트 파일을 파싱한다면 매우 비효율적이다. 

따라서 파싱된 결과를 담고 있는 리스트나 딕셔너리, 특정 클래스들을 파일로 저장해둔다면 매번 텍스트 파일을 파싱하는 대신 미리 파싱해놓은 리스트나 딕셔너리, 특정 클래스를 파일에서 읽기만 하면 된다.

파이썬의 피클(pickle)은 파이썬 객체 자체를 바이너리로 저장하고, 다시 로드해서 간편하게 쓸 수 있도록 도와준다.

파이썬 피클 - 객체 저장

간단한 예제를 살펴보자. 리스트에 데이터를 담고, 그 리스트를 파일로 써보자.

import pickle

my_list = ['this', 'is', 'my', 'list']

with open('my_data.pickle', 'wb') as f:
  pickle.dump(my_list, f)

객체의 데이터를 저장할 파일을 'wb' 모드로 연다. 그리고 pickle 모듈의 dump() 함수를 이용해서 my_list라는 객체를 파일에 쓴다.

이 코드를 실행하면 my_data.pickle 이라는 파일이 생성된다. 파일의 내용은 당연히도 바이너리로 텍스트 에디터로 열면 제대로 알아볼 수 없다.

<80>^D<95>^]^@^@^@^@^@^@^@]<94>(<8c>^Dthis<94><8c>^Bis<94><8c>^Bmy<94><8c>^Dlist<94>e.

 

파이썬 피클 - 객체 로드

이제 이렇게 저장된 객체를 다시 읽어보자.

import pickle

with open('my_data.pickle', 'rb') as f:
  my_list = pickle.load( f)

print(my_list)

# ['this', 'is', 'my', 'list']

이번에는 파일을 읽어서 객체를 만들어야 한다. 파이썬 객체가 저장되어 있는 my_data.pickle 파일을 'rb' 모드로 연다. 그리고 pickle 모듈의 load() 함수를 이용해서 파일을 읽어들인다. 그리고 리턴되는 값을 my_list 변수에 담는다.

그러면 데이터를 담고 있는 리스트가 다시 로드되어 쓸 수 있게 된다.


 

파이썬 스크립트 작성에 도움되는 글 모음

파이썬으로 프로그램을 작성할 때 도움되는 글들을 모아본다. 개발환경 [Python] macOS에 파이참 설치 [Python] 파이참 깃허브 연동 [Python] 파이썬 PIP란? [Python] VSCode를 이용한 개발환경 [Python] python3를

hbase.tistory.com

 

댓글