Можно ли в 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
Dr. Fischer
Steinbock Riesling
Германия 🇩🇪, Мозель-Саар-Рувер, белое, полусухое, крепость 12%, Рислинг.
Гордый козерог, как символ стойкости и бесстрашия в крутых поворотах жизни (козерогам привет🤘), конечно меня заинтересовал и не обманул ожиданием.
Блестяще, минерально, ароматно, а вкус требует повторного глотка.
В аромате цитрусы, ананас и стержень карандаша или мелка кохинор).
Вкус нежный, мягкий, живой, прекрасно сбалансированный, с интересной структурой и ярким послевкусием.
Ценник +/-1500р.
Чин!🍷
#Steinbock#Riesling
@pro_Wines
Lucien Albrecht
Riesling Reserve
Франция🇫🇷, Эльзас AOC, белое, полусухое, крепость 12,5%, моносорт Рислинг, 2019г.
Очаровательная, сдержаная классика. В бокале блестящее золото и салатовые блики.
В носу спокойный, стойкий аромат, минеральные тона, тонкие цитрусовые ноты, сухотравье и первоцветы.
Вкус с дружелюбной кислотностью, насыщен, как и аромат цирусовыми и минеральностью. Послевкусие да!, задумчивое, требующее повторного глотка.
Сможет полежать подождать вас в прохладе 3-5 лет, если вы к нему ппока ещё не готовы)
Ценник +/-1700р.
Замечен в магнолиях.
Чин! 🍷
#Lucien_Albrecht#рислинг
#Riesling
@pro_Wines
Сегодня 13 марта, международный день Рислинга и мне есть что сказать!
Рислинг для меня самый понятный сорт и достаточно лёгкий в уходе, но первые года урожай не давался легко, искали подход и даже больше 50% однажды срезали на землю. Печально, но факт.
Однако в 2023 году его Величество Рислинг приятно нас удивил и подарил прекрасный урожай! Настолько прекрасный, что некоторые виноделы просили меня продать виноград им!
Кстати, Riesling Domaine Bonamy 2023 мы скоро будем разливать по бутылкам и это вино будет готово одним из первых! Урожай умеренный и количество бутылок, соответственно, тоже!
За винификацию отвечал Дмитрий Маслов - наш профессиональный энолог, с которым мы сотрудничаем уже не первый год.
Оцениваем Рислинг 2023 как классное летнее, лёгкое и освежающее вино и с нетерпением ждём выпуска!
Photo by @koni_krim
#Riesling#рислинг#энолог#DomaineBonamy
Дорогие друзья! Наш дебютный Riesling Domaine Bonamy 2023 едет на фестиваль RieslingRoad, который состоится 25 августа, в Москве!
Ищите нас на стенде vino.ru, мы будем там! Регистрация на фестиваль 👉здесь
Будем рады всех видеть! 🥂
#riesling#rieslingroad
#DomaineBonamy#винору
Друзья! Лето - время рислингов и фестиваль RIESLING ROAD возвращается!
Фестиваль уже побывал в Санкт-Петербурге и Екатеринбурге и спешит в Москву.
В Москве 25 августа на веранде ресторана «Дом 16» (Покровский б-р, 16-18, стр. 4-4А) соберутся профессионалы рынка и поклонники рислингов на круговую дегустацию более 100 вин со всего света познакомиться с новинками от партнеров и продегустировать полюбившиеся вина! Мастер-классы, интересные спикеры и отличное настроение в эти жаркие дни обеспечено!
Следуй за рислингом вместе с нами!
Программа и билеты по ссылке. Сайт проекта: https://rieslingroad.ru
@rieslingroad#riesling#rieslinglover#rieslingwine#rieslingroad
Моя последняя любовь, учитывая ровное отношение к Рислингу.
Paddle Creek Riesling Rose
Lake Road
Новая Зеландия🇳🇿, Мальборо, розовое полусухое, купаж 97/3 Рислинг и Пино Нуар.
Лёгкое и приятное вино.
В бокале нежный прозрачный розовый цвет как уходящий весенний закат, чуть с рыжиной. В носу лекие красные фрукты, цитрусы, трава и... сама суть клёвого Рислинга - резина, велосипедная шина, машинное масло на тряпке в гараже .. Вкус маслянистый, не без тропических фруктов, с минимальной кислотностью. При этом хрустящее и свежее послевкусие.
Ценник +/-1100р.
Чин! 🍷
#дайтеДве#рислинг#rose
#Paddle_Creek#Riesling
@pro_Wines
Belmas Risling
Россия 🇷🇺, Крым (Севастополь), крепость 13,5%, моносорт Рислинг, о чём нам лаконично сообщено на этикетке Ri.
Отличный Рислинг из линейки, можно сказать, "Менделеев". Кстати, экземпляр занял высокую позицию в рейтинге лучших российских вин.
В носу персики, цитрусы, цветы и грушевые леденцы. Вкус идеальный - яркий, кислотный, нежно фруктовый с долгим интересным минеральным послевкусием. За оформление и внешний вид бутылки - респект. Очень стильно, да и вкусно)).
Ценник +/- 3000р.
Чин! 🍷
#Крым#Севастополь#Belmas#Riesling#Ri
@pro_Wines