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

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

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

Также для работы с бинарными файлами Python предоставляет специальный встроенный модуль pickle, который упрощает работу с бинарными файлами. Этот модуль предоставляет два метода:
• dump(obj, file): записывает объект obj в бинарный файл file
• load(file): считывает данные из бинарного файла в объект
Допустим, надо надо сохранить значения двух переменных:

🐍 Укус питона // 💬 Чат // #теория #файлы #бинарные
Что выведет этот код?
Anonymous Quiz
20%
type \'int\'
27%
type \'type\'
47%
Error
7%
0
Модуль pickle. Продолжение.

С помощью функции dump последовательно записываются два объекта. Поэтому при чтении файла также последовательно посредством функции load мы можем считать эти объекты. Консольный вывод программы:

В зависимости от того, какой объект мы записывали функцией dump, тот же объект будет возвращен функцией load при считывании файла.

🐍 Укус питона // 💬 Чат // #теория #файлы #бинарные
Каков вывод следующего сегмента?
Anonymous Quiz
65%
A
4%
B
15%
a
15%
Error
Модуль shelve.

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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