반응형
shelve
패키지는 Python에서 객체를 파일에 저장하고, 파일에서 객체를 쉽게 읽어오는 기능을 제공합니다. pickle
과 유사하지만, shelve
는 dict
와 비슷한 인터페이스를 제공하므로 키-값 쌍으로 데이터를 관리할 수 있습니다.
shelve
을 사용한 파일 쓰기
shelve
을 사용하여 데이터를 파일에 저장하는 방법은 매우 간단합니다. open()
함수를 사용하여 shelf
객체를 생성하고, 이 객체를 통해 키-값 쌍을 파일에 저장할 수 있습니다.
import shelve
# 데이터를 저장할 파일 열기 (쓰기 모드)
with shelve.open('mydata') as shelf:
shelf['name'] = 'Alice'
shelf['age'] = 30
shelf['is_student'] = False
이 코드에서 shelve.open()
은 mydata
라는 파일을 열거나 생성합니다. 이 파일은 .dat
, .dir
, .bak
등의 확장자로 여러 파일이 생성될 수 있습니다. 이후 shelf
객체는 마치 딕셔너리처럼 사용할 수 있습니다.
shelve
을 사용한 파일 읽기
파일에 저장된 데이터를 읽어오는 것도 간단합니다. shelve.open()
을 사용하여 파일을 열고, 키를 이용해 값을 읽어올 수 있습니다.
import shelve
# 데이터를 읽을 파일 열기 (읽기 모드)
with shelve.open('mydata') as shelf:
name = shelf['name']
age = shelf['age']
is_student = shelf['is_student']
print(f"Name: {name}")
print(f"Age: {age}")
print(f"Is student: {is_student}")
이 코드를 실행하면, mydata
파일에서 키에 해당하는 값들을 읽어와 출력하게 됩니다.
shelve
의 특징
- 편리한 데이터 저장:
shelve
은 딕셔너리와 같은 인터페이스를 제공하여 데이터를 키-값 쌍으로 쉽게 저장하고 불러올 수 있습니다. - 자동 직렬화:
shelve
는 내부적으로pickle
을 사용해 객체를 직렬화하고, 파일에서 비직렬화합니다. - 파일 관리: 데이터는 내부적으로 여러 파일에 나뉘어 저장될 수 있습니다. 이 파일들은 직접적으로 다루지 않고,
shelve
인터페이스를 통해 간접적으로 접근합니다.
실행 예제
위에서 설명한 코드들을 하나로 합치면, 다음과 같이 데이터를 저장하고 읽어올 수 있습니다:
import shelve
# 데이터 저장
with shelve.open('mydata') as shelf:
shelf['name'] = 'Alice'
shelf['age'] = 30
shelf['is_student'] = False
# 데이터 읽기
with shelve.open('mydata') as shelf:
name = shelf['name']
age = shelf['age']
is_student = shelf['is_student']
print(f"Name: {name}")
print(f"Age: {age}")
print(f"Is student: {is_student}")
주의 사항
- 동시 접근:
shelve
는 기본적으로 단일 프로세스에서 사용되도록 설계되었습니다. 여러 프로세스에서 동시에 접근할 경우 동기화 문제나 충돌이 발생할 수 있습니다. - 파일 확장자:
shelve
는 플랫폼에 따라 여러 파일을 생성할 수 있으며, 그 확장자가 다를 수 있습니다. - 보안:
pickle
을 사용하므로, 신뢰할 수 없는 데이터를shelve
파일로부터 로드하지 않도록 주의해야 합니다.
shelve
패키지는 파일에 데이터를 쉽게 저장하고 불러오는 데 유용하며, 특히 단순한 키-값 구조의 데이터를 다룰 때 편리합니다.
반응형