Можно ли в Python создавать бинарные файлы? Конечно можно.
Для этого в Python есть следующие инструменты:
▫️ тип данных bytes и bytearray
▫️ открытие файла в режиме wb (write binary) или rb (read binary)
▫️ модуль struct
Про модуль struct поговорим в первую очередь.
Файл в формате JSON или Yaml внутри себя содержит разметку данных. Всегда можно определить где список начался а где закончился. Где записана строка а где словарь. То есть формат записи данных содержит в себе элементы разметки данных.
В binary-файле данные не имеют визуальной разметки. Это просто байты, записанные один за другим. Правила записи и чтения находятся вне файла.
Модуль struct как раз и помогает с организацией данных в таком файле с помощью определения форматов записи для разных частей файла.
Модуль struct преобразует Python-объекты в массив байт, готовый к записи в файл и имеющий определённый вид.
Для этого всегда следует указывать формат преобразования (или, как оно здесь называется - запаковки).
Формат нужен для того, чтобы выделить достаточное количество байт для записи конкретного типа объекта. В последствии с помощью того же формата будет производиться чтение.
При этом следует помнить что мы говорим о типах языка С а не Python.
Именно формат определяет, что записано в конкретном месте файла, число, строка или что-то еще.
Вот какие токены формата у нас есть.
Помимо этого, первым символом можно указать порядок байтов. На разных системах одни и те же типы данных могут записываться по-разному, поэтому желательно указать конкретный способ из доступных. Если этого не сделать, то используется символ '@', то есть нативный для текущей системы.
В строке формата мы пишем в каком порядке и какие типы собираемся преобразовать в байты.
Запакуем в байты простое число, токен "i".
>>> import struct
>>> struct.pack('=i', 10)
b'\n\x00\x00\x00'
Теперь несколько float, при этом нужно передавать элементы не массивом а последовательностью аргументов.
>>> struct.pack('=fff', 1.0, 2.5, 4.1)
b'\x00\x00\x80?\x00\x00 @33\x83@'
Вместо нескольких токенов можно просто указать нужное количество элементов перед одним токеном, результат будет тот же.
>>> struct.pack('=3f', 1.0, 2.5, 4.1)
b'\x00\x00\x80?\x00\x00 @33\x83@'
Теперь запакуем разные типы
>>> data = struct.pack('=fiQ', 1.0, 4, 100500)
я запаковал типы float, int и unsigned long long (очень большой int, на 8 байт)
b'\x00\x00\x80?\x04\x00\x00...'
Распаковка происходит аналогично, но нужно указать тот же формат, который использовался при запаковке. Результат возвращается всегда в виде кортежа.
>>> struct.unpack('=fiQ', data)
(1.0, 4, 100500)
Как видите, ничего страшного!
#lib#basic
АПРЕЛЬСКИЕ ПРИВИЛЕГИИ В FREEDOM 🌱
Друзья, апрель — время перемен, вдохновения и самых приятных бонусов. Мы подготовили для вас подборку выгодных предложений, которые будут актуальны только в апреле!
Сохраняйте, чтобы ничего не упустить, и поделитесь полезной информацией с друзьями:
🥈 1. Скидка 5% на аренду номера
По промокоду «Апрель» получите скидку 5% при бронировании через наш сайт.
🌐freedom-hotel.ru⬅️🎁
📸 2. Бесплатная доставка из кафе-пекарни «Поль Бейкери»
Свежие булочки и паста стали ближе 😋
Подробности — в группе ⬅️🎁
🏊♂️ 3. Посещение бассейна «СОК Урал» за 250 рублей
Специальная цена только для гостей Freedom!
Подробности по запросу у администраторов.
💆♀️ 4. Спецпредложение на массаж. Только в апреле в массажной студии Sétedi по промокоду «FREEDOM» любой часовой массаж — 2500₽ (вместо 3150₽), а фирменный огненный массаж — 4500₽ (вместо 6700₽).
📲 Записаться можно онлайн по ссылке: https://setedi.taplink.ws
✅ В комментариях нужно указать промокод «FREEDOM».
📍массажная студия Sétedi, -1 этаж
🍿 5. Кино каждый вечер в 20:30
Абсолютно бесплатно для всех гостей отеля, расписание — в афише на неделю ⬅️🎁
🧘♀️ 6. Йога по вторникам
Весь апрель — бесплатные занятия для наших гостей. По предварительной записи.
📅 Про мероприятия апреля смотрите расписание тут⬅️
Следите за анонсами!
Мы в ВК
☎️ +7 (343) 379-09-00
🌏freedom-hotel.ru
Оставайтесь с нами и ловите весну в стиле Freedom! 🌱
#freedomEkb
Пятница — время планов. Как проведёте вечер?
У нас можно:
🍿 Посмотреть кино в 20:30
💆♀️ Уйти в массаж с головой
🏊♂️ Поплавать в «СОК Урал» за 250₽
🥐 Заказать ужин в «Поль Бейкери»
Рассказывайте в комментариях, как планируете отдыхать 👇
Ваш Freedom 🌸
#freedomEkb
🏨 Первый апарт-отель на Урале в 15 минутах езды от центра Екатеринбурга! 136 апартаментов с дизайнерским ремонтом. Уют дома, сервис гостиницы, фитнес-зал, кинотеатр, коворкинг, студия подкастов и конференц-зал.
☎️+7 (343) 379-09-00
🌏freedom-hotel.ru
#freedomEkb
🏆 Апарт-отель Freedom борется за победу в Национальной гостиничной премии!
Мы решили, что пора заявить о себе на профессиональном уровне и подали заявку на участие в национальной гостиничной премии.
Апарт-отель Freedom будет представлен сразу в двух номинациях:
1. 🏨 «Лучший проект реконструкции отеля» — наш проект реконструкции заслуживает внимания, и мы готовы доказать это экспертному жюри.
https://hotelawards.ru/categories/luchshiy-proekt-rekonstrukcii-otelya
2. 👤 «Персона года» — здесь честь апарт-отеля и всего нашего коллектива будет отстаивать управляющий Евгений Захаров.
Держите за нас кулачки! Для нас это важный шаг в развитии и признание качества сервиса. 🤞
#freedomEkb
Иногда нужно отключиться от мира, чтобы снова подключиться к себе. Отель для этого — идеальное место.
☎️+7 (343) 379-09-00
🌏freedom-hotel.ru
#freedomEkb
МАРТОВСКИЕ ПРИВИЛЕГИИ В FREEDOM 🌸
Друзья, весна — время перемен, вдохновения и самых приятных бонусов. Мы подготовили для вас подборку выгодных предложений, которые будут актуальны только в марте!
Сохраняйте, чтобы ничего не упустить, и поделитесь полезной информацией с друзьями:
🥈 1. Вторые сутки — минус 10%
При бронировании вторых суток дарим скидку 10%. Подробности — в отдельном посте⬅️🎁
📸2. Бесплатный мастер-класс по фото-позированию
Учимся создавать идеальные кадры с профессиональным фотографом и директором модельной школы. Пост с деталями в ВК — здесь⬅️🎁
🏊♂️ 3. Посещение бассейна «СОК Урал» за 250 рублей
Специальная цена только для гостей Freedom! Подробности тут⬅️🎁
🍣 4. Восемь роллов в подарок 😋
При заказе через сайт Вкус.space укажите промокод Freedom и получите подарочный ролл из 8 шт. при любом заказе от 1000₽.
💆♀️5. Скидка 30% на огненный массаж
Для гостей отеля действует скидка 30% на огненный массаж по промокоду «ОГОНЬ». Массажный салон Sétedi, -1 этаж.
Забронировать дату и время тут⬅️🎁
🍿6. Кино каждый вечер в 20:30
Абсолютно бесплатно для всех гостей отеля, ознакомиться с расписанием можно в афише⬅️🎁
🧘♀️7. Йога по вторникам
Весь март — бесплатные занятия для наших гостей. По предварительной записи.
Следите за анонсами!
Мы в ВК
☎️+7 (343) 379-09-00
🌏freedom-hotel.ru
Оставайтесь с нами и ловите весну в стиле Freedom! 🌱
#freedomEkb
Посуда с душой ❤️
Кажется, наша гостья готова объявить охоту на тарелки 😀 А всё потому, что к выбору посуды для номеров мы действительно подошли с особым трепетом!
Нам важно, чтобы даже обычный завтрак или уютный ужин в номере приносили эстетическое удовольствие. Поэтому для вас мы подготовили всё необходимое.
🍽 Сервировка на двоих
Когда вы заезжаете вдвоем, на кухне вас уже ждет полный комплект:
— прозрачные стаканы (2 шт.)
— бокалы для вина (2 шт.)
— чашки с логотипом для чая и кофе (2 шт.)
— плоские тарелки с мотивирующими надписями (2 шт.) — пусть каждый приём пищи будет вдохновляющим!
— глубокие тарелки с логотипом (2 шт.)
— столовые приборы из хирургической стали
🔪 Всё для готовки:
ложки, вилки, ножи, штопор, вакуумная пробка для вина, открывашка для консервов, кастрюля, сковородка и разделочная доска.
🧼 Забота о комфорте
Чтобы вам не пришлось думать о бытовых покупках, в номере есть средство для мытья посуды (встроенный дозатор на раковине), тряпочка для стола и полотенце для рук.
Для гостей «Люкса» — приятный бонус: посудомоечная машина и капсулы для стирки.
Приезжайте! У нас всё по-домашнему уютно и с душой продумано до мелочей 🏨✨
На всякий случай напоминаем: уносить тарелки и приборы из отеля нельзя, но можно пользоваться ими без ограничений. А если вдруг случился бой — не страшно, однако придется оплатить штраф.
🌎freedom-hotel.ru
☎️ +7 (343) 379-09-00
#freedomEkb