Всем привет! В данной статье мы познакомимся с модулем shelve который позволяет хранить значения списков, переменных и т. д. в файлах и получать к ним доступ по заданным ключам. Это прежде всего удобно, когда мы хотим чтобы программа при завершении работы сохраняла все свои данные и параметры для дальнейшей работы с ними. Данный модуль является стандартным в python и поэтому его не нужно скачивать и устанавливать. Итак, поехали!
Для начала работы с модулем делаем его импорт.
import shelve
Все теперь мы можем приступать к работе с данным модулем. Создаем файл для записи данных.
shelveFile = shelve.open('mydata')
shelveFile.close()
Как видите работа с данным модулем ничем не отличается от работы с обычными файлами. После выполнения данного кода у нас должен создаться файл 'mydata'. Однако если мы посмотрим на результат, то у нас вместо одного файла создаться сразу три:
mydata.dat
mydata.bak
mydata.dir
Здесь мы видим файл mydata сразу в трех расширениях dat, bak и dir. Ни в коем случае не удаляйте их. Они по сути составляют структуру одного файла.
Отлично! Теперь попробуем записать данные в файл mydata.
shelveFile = shelve.open('mydata')
count = 3
names = ['Andrey', 'Alena', 'Lena']
shelveFile['names'] = names
shelveFile['param'] = count
shelveFile.close()
Вначале я говорил что данные в файлы модуля shelve записываются по заданным ключам.
Здесь в файле mydata я создал ключ 'names' в который записал значения переменной 'names' и 'param', в него было записано значение переменной count.
После выполнения данного кода у нас обновится файл mydata и переданные в него параметры будут сохранены.
Для получения данных из файла mydata нам достаточно просто обратится к заданным ключам:
shelveFile = shelve.open('mydata')
print(shelveFile['names'])
print(shelveFile['param'])
shelveFile.close()
Вот мы и получили из файла mydata наши записанные значения, а именно список имен и число 3.
Если мы хотим перезаписать или изменить данные ключа, достаточно просто их переопределить:
shelveFile['param'] = 'Новое значение'
Для удаления ключа и его данных необходимо воспользоваться функцией pop():
shelveFile.pop('param')
В саму функцию передается название ключа который мы хотим удалить.
Также модуль shelve для удобной работы с данными файлов предоставляет следующие методы:
keys() -данный метод возвращает объект списка ключей в файле.
print(list(shelveFile.keys()))
Заметьте чтобы получить сам список нам необходимо воспользоваться функцией list().
В результате мы получим список всех ключей файла.
Мы также можем получить список значений через метод values().
print(list(shelveFile.values()))
Здесь были получены все записанные данные в файле mydata без учета ключей.
Если нужно получить все данные и их ключи, достаточно воспользоваться методом items().
print(list(shelveFile.items()))
В результате будет возвращен список кортежей(пар ключ : значение).
Для подсчета количества ключей в файле можно воспользоваться стандартной функцией len().
print(len(shelveFile))
Результатом будет количество содержащихся ключей.
Вот в принципе и все что вам нужно знать для работы с модулем shelve.
На этом у меня все. Не забывайте оставлять комментарии и подписываться в группу
вк.Желаю вам успехов и удачи! Пока.