본문 바로가기

언어/Python

[ Python ] pickle를 사용하여 데이터를 읽고 쓰기

반응형

pickle 패키지는 Python 객체를 파일에 저장하거나 파일에서 읽어오는 데 사용됩니다. pickle은 객체를 바이트 스트림으로 직렬화(serialize)하고, 다시 원래의 객체로 역직렬화(deserialize)할 수 있습니다.

pickle을 사용한 파일 쓰기 (저장)

객체를 파일에 저장하려면 pickledump() 메서드를 사용합니다. 이 메서드는 지정된 파일에 객체를 직렬화하여 저장합니다.

import pickle

# 예제 데이터: 딕셔너리 객체
data = {'name': 'Alice', 'age': 30, 'is_student': False}

# 데이터를 저장할 파일 열기 (쓰기 모드)
with open('data.pickle', 'wb') as file:
    pickle.dump(data, file)

여기서 중요한 점은 파일을 열 때 모드가 'wb' (바이너리 쓰기 모드)로 지정된다는 것입니다. pickle은 바이너리 데이터를 다루기 때문에, 파일 모드를 'wb'로 설정해야 합니다.

pickle을 사용한 파일 읽기 (로드)

파일에서 저장된 객체를 읽어오려면 pickleload() 메서드를 사용합니다. 이 메서드는 지정된 파일에서 객체를 역직렬화하여 불러옵니다.

import pickle

# 데이터를 읽을 파일 열기 (읽기 모드)
with open('data.pickle', 'rb') as file:
    loaded_data = pickle.load(file)

print(loaded_data)

여기서도 파일을 열 때 모드가 'rb' (바이너리 읽기 모드)로 설정된 것을 볼 수 있습니다.

실행 예제

위의 코드들을 실행해 보면, 처음에는 객체 datadata.pickle 파일에 저장되고, 이후에 이 파일에서 데이터를 읽어 loaded_data 변수에 할당됩니다. 출력은 다음과 같습니다:

{'name': 'Alice', 'age': 30, 'is_student': False}

이처럼 pickle은 Python의 기본 데이터 구조와 객체들을 손쉽게 파일로 저장하고 다시 불러오는 기능을 제공합니다.

주의 사항

  • 보안: 신뢰할 수 없는 소스에서 pickle 파일을 불러오면 안 됩니다. pickle은 임의의 코드 실행이 가능하므로, 악의적인 코드가 포함될 수 있습니다.
  • 호환성: pickle로 저장된 파일은 Python 버전 간에 호환성 문제가 있을 수 있습니다. 따라서 저장과 읽기를 동일한 Python 버전에서 하는 것이 가장 안전합니다.

이제 pickle 패키지를 사용하여 객체를 파일로 저장하고 다시 불러오는 방법을 알게 되었습니다. 이 방법을 활용하면 복잡한 데이터 구조를 쉽게 저장하고 복원할 수 있습니다.

반응형