🐍 Укус питона 🐍
3.01K subscribers
594 photos
2 videos
273 links
🐍 Канал о программировании на языке Python. Тематические уроки и лайфхаки.

👽 Админ - @it_dashka
🔊 Купить рекламу: https://telega.in/c/byteofpython

👉 Чат: @abyteofpython
👉 Поделиться с друзьями: @byteofpython
Download Telegram
Модуль shelve.

Для работы с бинарными файлами в Python может применяться еще один модуль - shelve. Он сохраняет объекты в файл с определенным ключом. Затем по этому ключу может извлечь ранее сохраненный объект из файла. Процесс работы с данными через модуль shelve напоминает работу со словарями, которые также используют ключи для сохранения и извлечения объектов.

Для открытия файла модуль shelve использует функцию open():

Где параметр flag может принимать значения, смотрим в пример:

🐍 Укус питона // 💬 Чат // #теория #файлы #бинарные
🔵 Практический интенсив «Python-разработчик: основы за 2 дня» — 23-24 апреля в 19:00 мск.

О перспективах направления Python и многом другом расскажет Грегори Салиба, старший разработчик ЭквантаЛаб с опытом в разработке более 3 лет. 

На вебинаре вы:

☑️ Самостоятельно напишете Telegram-бота с карточными мини-играми.
☑️ Познакомитесь с синтаксисом языка и сферами его применения.
☑️ Узнаете, чего ждут работодатели от junior-разработчиков и что делать, чтобы найти работу без опыта.

Переходите по ссылке, чтобы зарегистрироваться на бесплатный практический интенсив и забрать подарки 🎁
Модуль shelve. Продолжение.

Для закрытия подключения к файлу вызывается метод close():

Либо можно открывать файл с помощью оператора with. Сохраним и считаем в файл несколько объектов:

🐍 Укус питона // 💬 Чат // #теория #модули #shelve
Что выведет этот код?
Anonymous Quiz
25%
0 2 1 3 2 4
11%
0 1 2 3 4 5
61%
Error
3%
1 0 2 4 3 5
Модуль shelve. Продолжение.

Запись данных предполагает установку значения для определенного ключа:

А чтение из файла эквивалентно получению значения по ключу:

🐍 Укус питона // 💬 Чат // #теория #модули #shelve
Что выведет этот код?
Anonymous Quiz
24%
1 2 1 1
24%
1 1 2 1
33%
1 2 2 1
18%
1 2 2 2
Чтение данных.

При чтении данных, если запрашиваемый ключ отсутствует, то генерируется исключение. В этом случае перед получением мы можем проверять на наличие ключа с помощью оператора in:

Также мы можем использовать метод get(). Первый параметр метода - ключ, по которому следует получить значение, а второй - значение по умолчанию, которое возвращается, если ключ не найден.

Используя цикл for, можно перебрать все значения из файла:

🐍 Укус питона // 💬 Чат // #теория #модули #shelve
Чтение данных. Продолжение.

Метод keys() возвращает все ключи из файла, а метод values() - все значения:

Еще один метод items() возвращает набор кортежей. Каждый кортеж содержит ключ и значение.

Консольный вывод:

🐍 Укус питона // 💬 Чат // #теория #модули #shelve
Что выведет этот код?
Anonymous Quiz
11%
0.333333
41%
0.33
7%
0.333333:-2
40%
Error
Обновление данных.

Для изменения данных достаточно присвоить по ключу новое значение, а для добавления данных - определить новый ключ:

🐍 Укус питона // 💬 Чат // #теория #модули #shelve
Что выведет этот код?
Anonymous Quiz
22%
0 1 2 3 0
58%
0 1 2 0
12%
0 1 2
8%
Error
Удаление данных

Для удаления с одновременным получением можно использовать функцию pop(), в которую передается ключ элемента и значение по умолчанию, если ключ не найден, первый пример:

Также для удаления может применяться оператор del, второй пример:

Для удаления всех элементов можно использовать метод clear(), последний пример:

🐍 Укус питона // 💬 Чат // #теория #модули #shelve