Можно ли в 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
Это чистая роскошь и абсолютная ЛЮБОВЬ!❤️
Новые матовые помады PUPA Milano Моя любовь/My crush - ну до чего хороши!😍
С абсолютно удивительной, суперсовременной формулой: яркие пигменты, смягчающие масла и такие нежные губы, как шелк!
Никакой сухости, никаких трещинок, никакого дискомфорта! Только нежность, мягкость и очарование
И оцените красоту футляра - квинтэссенция женственности и изящества.
Какой оттенок из видео вам понравился больше всего?
В видео я перекрасила губы 8 раз, и даже после этого они в отличном состоянии, как будто лучше, чем были до🙀
А найти такую красоту можно на OZON и на WILDBERRIES
Попробуйте - они роскошны!
#pupamilano
*реклама
Любовь с первого взгляда или с первого прикосновения
невероятная новинка от @pupamilanorussia , матовая помада PUPA Milano МОЯ ЛЮБОВЬ/MY CRUSH
честно первый раз встречаю настолько мягкую и бархатистую текстуру , финиш матовый но при этом она вообще не ощущается на губах , не подчеркивает шелушения , я в шоке !
+ очень необычный и женственный дизайн , в форме кушона (упаковка мягкая , силиконовая)
восемь просто потрясающих оттенков и насыщенный цвет с первого нанесения
Купить можно на OZON и WB
мои фавориты 011,012 , а какой оттенок вам приглянулся ?
#pupamilano
Pupa Milano, ну что за роскошь такая - вы только посмотрите на эту новую лимитированную коллекцию Penny Black🖤
Для меня как для фаната палеток и хайлайтеров это просто в самое сердечко. А эта упаковка! В коллекции палка теней, хайлайтерв и 2 оттенка помад (на фото у меня одна - вторую покажу чуть позже уже в свотчах - она более розовая). Честно скажу - эти шикарные продукты даже жалко свотчить - хочется смотреть на них и вздыхать от восхищения.
#pupamilano
Ой девочки! Смотрите какая милота❤️
Обожаю находки, которые сразу создают настроение – и эти бархатные косметички от Pupa Milano именно такие: стильные, уютные и идеально зимние.
Внутри — бестселлеры бренда: культовая тушь Vamp!, а также карандаши и подводки, блески для губ, средства для снятия макияжа и милые аксессуары — всё, чтобы собрать идеальный макияж.
А еще сами оттенки косметичек😍
Ну сами посмотрите, как это стильно смотрится.
Такое не грех себе любимой и подругам подарить.
#PupaMilano
Девочки, отличная новинка от PUPA Milano – Wonder Me Defender.
Это тональный бальзам с SPF 50, невесомым покрытием и уходом в одном флаконе в формате компактной пудры.
Какие плюсы у средства я выявила:
1️⃣Максимальная защита от солнца без белого налета.
2️⃣Легкий, естественный финиш, а плотность нанесения можно варьировать наслоиванием.
3️⃣в составе 93% натуральных ингредиентов: каолин, масло ши и экстракт Понгамии для ухода.
4️⃣Хорошая стойкость, жирный блеск не проявляется больше 5 часов🤌🏻
Идеален для любого типа кожи и поможет быстро освежит макияж в течение дня.
Красота и забота вместе, 2в1❤️
В линейке 4 тона, мне отлично подошел 02, с более холодным подтоном.
#PUPAMilano
Обещала вам распаковку шикарной рассылки от Pupa Milano ❤️
Рассылка посвящена запуску двойных фломастеров для губ Vamp! Marker duo - это роскошное комбо - маркеры + блески для губ в супер трендовых оттенках.
Кстати неплохая идея - когда не можешь выбрать оттенок - предоставить этот самый выбор вселенной💫
#pupamilano#макияж
Вот такие конфетки выпустили любимые Pupa Milano❤️🔥
Это новые пламперы для губ. Обязательно покажу вам свотчи - цвета очень красивые и при этом они прилично увеличивают губы 💋
Важно - как и все пламперы дающие явно видимый эффект увеличения, продут воздержитесь в себе сильные активы - в данном случае это ментол❄️, чили 🌶️ и специальный актив maxi-lip. Поэтому перед тем как нанести продукт на губы протестируйте его на руке - наносим полосочку, ждём, стираем и ждём. Если реакция терпимая, то можно использоваться.
Эффект они дают невероятно красивый, но если у вас чувствительная кожа и склонность к дерматитам, то лучше выбрать другие блески от Бренда - благо ассортимент роскошных текстур и трендовых оттенков огромный.
Свотчи обязательно покажу чуть позже✨
#pupamilano#макияж
Нас вчера занесло снегом, поэтому радую себя весенней коллекцией Color Trip от Pupa Milano🤍
У меня на тесте масла и бальзамы для губ (кстати, мой вам совет - увидите в магазинах - хватайте про запас - у бренда в лимитах просто топовые средства для губ. А вот эти малышки-масла ничем не уступают знаменитым маслам от кларанс).
Румяна в стике покажу вам отдельно - это топ🔝 В самом стике продукт светлый, а проявляется он при нанесении - это нужно видеть.
Также в моем наборе хайлайтер с влажным сиянием и масло для ногтей. Все продукты покажу в действии❤️
#pupamilano#макияж
Роскошная зимняя лимитка Night Heroes от Pupa Milano.
В моем наборе:
🟣Жидкий хайлайтер с деликатным сиянием и влажным финишем. Идеален, чтобы красиво подчеркнуть ключицы или другие открытые зоны в новогоднем наряде;
🟣Компактный сухой хайлайтер с мельчайшим золотистым финишем для макияжа лица;
🟣Запеченые сияющие румяна - очень красивое сочетание бронзового и розового в запаянной текстуре - в макияже дают легкое сияние и придают правильный объем щечкам;
🟣Ухаживающее масло для губ с мельчайшими сияющими частицами. Абсолютно нелипкая, шелковистая текстура нежно обволакивает и придает губам деликатный блеск и дополнительный объем за счет сияющих частичек. Вангую - его сметут одним из первых - рекомендую запастись.
🟣2 в одном - помада-бальзам + стойкий карандаш для губ. Идеальный нюд - еще один кандидат на sold out. Прекрасный компаньон для вечернего smoky eyes с правильным подтоном, который не уходит ни в розовый, не в рыжи, ни в серый. Просто идеальный беж.
🟣Палетка сияющих оттенков теней - как всегда у пупа тени мягкие, жирненький, не пылят и отлично отдают цвет✨
Вот такая коллекция, как вам?✨
#pupamilano#макияж
Вот так выглядит тушь Vamp! lash Extender от Pupa Milano❤️
Давно хотела вам показать - откуда берутся ресницы - да меня загадка - мне кажется их у меня не так и много. Тушь создает какой-то невероятный объем и длину. Мне еще нравится красить ресницы смещая щеточку к внешнему уголку глаза. Получается очень крутой эффект. Как вам?🤗
#макияж#pupamilano