Можно ли в 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
PLENILUNIUM способен расслабить и успокоить, стоит только полюбоваться на глубокий, мерцающий синий цвет флакона и прочитать ноты.
Верхние ноты: Бурбонская ваниль, ром, морская соль, манго, зеленые побеги, розовый перец.
Средние ноты: стручковый перец, королева ночи, бобы тонка, бумага.
Базовые ноты: серая амбра, амирис, замша.
Группа: гурманский, ванильный, пряный, пудровый.
В продаже с 3 апреля на сайте fakoshimaperfumes.com и в магазинах Cosmotheca
#fakoshima#fakoshima_perfumes
Это уже не тайна, это PLENILUNIUM — наш 10-й серийный аромат. Презентация, которого состоится уже 2 апреля. На следующий день — 3 апреля парфюм появится на нашем сайте fakoshimaperfumes.com и в магазинах Сosmotheca.
Пока делимся тизером. Больше информации совсем скоро.
#fakoshima#fakoshima_perfumes
TEAR YOU APART на мощнейшем секс посыле. Ну а как иначе, страсть — суть этого парфюма. Режиссер Ярослава Попова и команда снова раздают стиля. Наши горячие герои и соперники: Марк Орлов — танцор Большого театра и Александра Романовна — чемпионка Петербурга тайскому боксу.
Репосты, разумеются, приветствуются!
#fakoshima#fakoshima_perfumes
Испанские страсти или все совпадения не случайны!
EL PRIMER DESEO уже на ваших экранах.
А предзаказ парфюма на нашем сайте.
AI @curly_parfumaniac
#fakoshima#fakoshima_perfumes
SECRET VENUE буквально создан для отдыха, каникул и праздничного настроения. Это капли счастья в радужном флаконе, который великолепно выглядит и прекрасно себя чувствует и в жарких джунглях, и в холодном климате.
Фотографии разумеется без обработки. Главный фильтр — бразильское солнце.
Группа: фруктовый, гурманский, пряный, восточный.
Верхние ноты: манго, розовый перец, цитрусовые ноты, лист фиалки, розовое шампанское, жжёный сахар.
Средние ноты: меренга, франжипани, мангостин, кедр, ветивер, замша, бессмертник, ром.
Базовые ноты: марципан, бурбонская ваниль, нероли, амбра, пачули, уд, пудровые ноты.
#fakoshima_perfumes#fakoshima
Всего несколько дней осталось до 13 января, когда мы подведём итоги розыгрыша среди покупателей на сайте fakoshimaperfumes.com и два счастливчика получат свои флаконы OPUS XXV. Испытайте свою удачу и просто порадуйте себя одним из наших ароматов.
Имиджи Бахром
#fakoshima#fakoshima_perfumes
До конца этой недели в магазинах Cosmotheca в Москве ещё можно увидеть скульптуры, созданные художницей Lena Fab специально к релизу аромата Secret Venue. Переливающиеся рыбки, богомолы и орхидеи буквально вышли из сияющего тайного мира нашего видео кампейна.
В Екатеринбурге и Ереване скульптуры будут стоять подольше.
#fakoshima#fakoshima_perfumes
Эти красавчики уже расползлись по магазинам Cosmotheca в Москве и заняли свои места на полках вместе с Secret Venue.
Скульптуры созданы художницей Lena Fab из комбинации разных материалов: эпоксидная смола, гипс, холодный фарфор, бетон, лаки. Помните в феврале и марте розы с огромными шипами в витринах Contre Culture? Их тоже сделала Лена.
А почему сейчас это именно орхидеи, переливающийся рыбки и богомолы, вы узнаете совсем скоро.
#fakoshima#fakoshima_perfumes
Пожалуй, так мог бы выглядеть кампейн CONTRE CULTURE в анимационной вселенной ARCANE 💔⚡️🌹
Но это в нашей реальности и создано совместно с цифровой художницей Ритой Грецкой и композитором Эмилем Максютовым.
Бунтарская нео-шипровая композиция парфюма CONTRE CULTURE переплетает в себе ноты розы сентифолия, граната, мескаля, бенгальского переца, овощной сангриты, переца чили, металла, пороха, ириса и кедра.
#fakoshima#fakoshima_perfumes