Модуль Python Shelve
«Полка» (shelf) — это постоянный объект, похожий на словарь. Отличие от баз данных «dbm» заключается в том, что значения (а не ключи!) в полке могут быть по существу произвольными объектами Python — всем, что может обработать модуль pickle. Это включает большинство экземпляров классов, рекурсивные типы данных и объекты, содержащие много общих подобъектов. Ключи — обычные строки.
Сохранение переменных
import shelve
wife = ['Pretty', 'Lovely', 'Nice']
# Открыть файл полки и сохранить данные
with shelve.open('mydata') as shelf_file:
shelf_file['wife'] = wife
Открытие и чтение переменных
# Открыть файл полки и прочитать данные
with shelve.open('mydata') as shelf_file:
print(type(shelf_file))
# Доступ к сохраненному значению по ключу
print(shelf_file['wife'])
<class 'shelve.DbfilenameShelf'>
['Pretty', 'Lovely', 'Nice']
Подобно словарям, значения shelf имеют методы keys() и values(), которые возвращают значения, похожие на списки, ключей и значений в полке. Поскольку эти методы возвращают значения, похожие на списки, а не настоящие списки, вам следует передать их функции list(), чтобы получить их в форме списка.
# Доступ ко всем ключам и значениям в полке
with shelve.open('mydata') as shelf_file:
print(list(shelf_file.keys()))
print(list(shelf_file.values()))
['wife']
[['Pretty', 'Lovely', 'Nice']]