Super Kawaii Cute Cat Kaoani 파이썬에서 객체(+ 여러 객체)를 파일로 저장하고 불러오기

연구/Python

파이썬에서 객체(+ 여러 객체)를 파일로 저장하고 불러오기

치킨고양이짱아 2023. 4. 4. 16:45
728x90
728x90

객체를 파일로 저장하는 과정: 피클링

파일으로부터 객체를 불러오는 과정: 언피클링

이라고 한다. 위의 과정들은 파이썬의 pickle 모듈을 사용하여 진행할 수 있다.

1) 객체 하나를 파일로 저장하고 로드하기

객체를 file로 저장하는 피클링은 다음과 같이 하면 된다. 이때 file의 확장자 명은 .p, .pickle 등 다양하게 사용할 수 있다. 

이때 주의해야하는 점은 file을 'wb' 모드로 오픈해야한다는 것이다. b는 binary라는 뜻으로 컴퓨터가 처리하는 파일 형식으로 오픈한다는 의미이다.

import pickle

a = Motion()

with open('file 경로', 'wb') as f:
	pickle.dump(a, f)

저장된 파일로부터 객체를 로드하는 언피클링은 다음과 같이 하면 된다. 이때 file은 'rb'모드로 오픈해야한다.

import pickle

with open("file 경로", 'rb') as f:
	a = pickle.load(f)

 

2) 여러 객체를 한 파일로 저장하기

여러 객체를 한 file에 저장하는 것도 가능하다.

import pickle

a = Motion()
b = Motion()
c = Motion()

with open('file 경로', 'wb') as f:
	pickle.dump(a, f)
    	pickle.dump(b, f)
    	pickle.dump(c, f)

여러 객체를 한 file에 저장했을 때 언피클링은 다음과 같이 load를 여러번 진행하면 된다. dump한 순서대로 load된다.

import pickle

with open("file 경로", 'rb') as f:
	a = pickle.load(f)
    	b = pickle.load(f)
    	c = pickle.load(f)

몇 개의 object를 dump 했는지 모를 때 while문을 사용해 load를 진행할 수 있다. load가 fail 할때까지 load된 object를 list에 저장하는 예시이다.

import pickle
motion_list = []
        with open("파일 경로", 'rb') as f:
            while True:
                try:
                    motion = pickle.load(f)
                    motion_list.append(motion)
                except EOFError:
                    break
728x90
728x90

'연구 > Python' 카테고리의 다른 글

파이썬 메모리에서 객체 지우기  (0) 2023.04.04