파일에서 Python 객체를 역직렬화하는 방법
파일에서 Python 객체의 역직렬화하는 방법.
파일에서 Python 객체를 역직렬화하는 단계별 튜토리얼을 제공합니다:
단계 1: 직렬화와 역직렬화 이해하기 직렬화는 객체를 파일이나 네트워크 스트림과 같이 저장하거나 전송할 수 있는 형식으로 변환하는 과정입니다. 역직렬화는 직렬화된 데이터를 다시 객체로 변환하는 반대 과정입니다.
단계 2: 직렬화 라이브러리 선택하기 Python은 Pickle, JSON, YAML과 같은 직렬화를 위한 여러 라이브러리를 제공합니다. 이 튜토리얼에서는 Python의 내장 직렬화 모듈인 Pickle 라이브러리에 초점을 맞출 것입니다.
단계 3: 직렬화할 객체 생성하기
객체를 역직렬화하기 위해서는 직렬화할 객체가 필요합니다. name, age, address와 같은 속성을 가진 간단한 예제 클래스인 Person을 만들어보겠습니다.
class Person:
def __init__(self, name, age, address):
self.name = name
self.age = age
self.address = address
단계 4: 객체를 직렬화하고 파일에 저장하기
객체를 직렬화하기 위해 Pickle 라이브러리의 pickle.dump() 함수를 사용할 것입니다. 이 함수는 두 개의 인수를 받습니다: 직렬화할 객체와 직렬화된 데이터를 쓸 파일 객체입니다.
import pickle
person1 = Person("John Doe", 25, "123 Main St")
person2 = Person("Jane Smith", 30, "456 Elm St")
# 객체를 직렬화하고 파일에 저장하기
with open("persons.pkl", "wb") as file:
pickle.dump(person1, file)
pickle.dump(person2, file)
위의 코드에서는 두 개의 Person 객체를 생성하고 "persons.pkl"이라는 파일에 저장합니다.
단계 5: 파일에서 객체 역직렬화하기
객체를 역직렬화하기 위해 Pickle 라이브러리의 pickle.load() 함수를 사용할 것입니다. 이 함수는 파일 객체를 인수로 받고 역직렬화된 객체를 반환합니다.
# 파일에서 객체 역직렬화하기
with open("persons.pkl", "rb") as file:
deserialized_person1 = pickle.load(file)
deserialized_person2 = pickle.load(file)
# 역직렬화된 객체에 접근하고 출력하기
print(deserialized_person1.name)
print(deserialized_person2.age)
위의 코드에서는 "persons.pkl" 파일을 읽기 모드로 열고 pickle.load()를 사용하여 객체를 역직렬화합니다. 그런 다음, 역직렬화된 객체의 속성에 접근하여 출력할 수 있습니다.
단계 6: 예외 처리하기 객체를 역직렬화할 때, 파일을 찾을 수 없거나 호환되지 않는 데이터가 포함된 경우와 같은 예외 상황에 대해 적절히 처리하는 것이 중요합니다.
try:
with open("persons.pkl", "rb") as file:
deserialized_person1 = pickle.load(file)
deserialized_person2 = pickle.load(file)
except FileNotFoundError:
print("파일을 찾을 수 없습니다!")
except EOFError:
print("파일의 끝에 도달했습니다!")
위의 코드에서는 역직렬화 중 발생할 수 있는 FileNotFoundError와 EOFError 예외를 처리하기 위해 try-except 블록을 사용합니다.
이제 Python 객체를 Pickle 라이브러리를 사용하여 파일에서 역직렬화하는 방법을 알게 되었습니다. 적절한 예외 처리를 수행하고 직렬화된 객체와 역직렬화된 객체의 호환성을 확인하는 것을 잊지 마세요.