Можно ли в 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
Сегодня завтрак начался с бокала вина и день выдался ленивым и томным с дневным сном и сериалом от которого не оторваться
В музей Востока мы так и не доехали, зато по пути в салон я не удержалась и купила бутылочку красного уже обычного объема 0,75 литра. Так что толер как бы и не снизился хотя суммарно вышло не 4 стандартных бутылки на двоих за два дня, а три. Почему по пути в салон? Ну просто педикюр в 20:00 и был риск не успеть на обратном, а риск-менеджмент- наше всё
Еще в моей жизни сейчас много перемен. Ритм и прогресс точно в том темпе который необходим и вообще возможен учитывая все события трех минувших лет. На этот год у меня большие планы, пока я к ним иду медленно, но верно максимально нагрузив себя трудотерапией и работая над тем, чтобы вас удивлять много и часто пишу о том и делюсь с вами чем могу здесь и сейчас- это многочисленными историями о былых приключениях и искусстве, особенно кино
Знаете, я уже достаточно давно поняла, что суть жизни в ее непредсказуемости, но только сейчас осознаю, что начинать все с начала невероятно увлекательно и интересно не смотря на то, что это весьма не просто
На рейвы как-то пока не хочется хотя много интересных ивентов. Жду весны, чтобы встречать рассвет в курилке и разговаривать обо всем и ни о чем
В декабре два раза была на Секте на Синестезии и Китчен рейв и не пожалела. С самого начала его пути и до феноменального роста он был и остается одним из самых моих любимых артистов. Еще вспоминаю Черту и последнюю вечеринку команды почти год назад. Я даже дату запомнила- 22 февраля. Самый мой любимый рейв прошлого года. Еще был М див весной и предпоследняя вечеринка в Арме. Мы думали, что прощаемся с заводом и было как-то особенно лирично чтоли. Но не тут то было, клуб на Шарикоподшипниковской не так-то просто отправить в отставку хотя он навсегда лично для меня останется Мутабором в который я пришла в 2019 и загорелась идеей снимать на рейвах влюбившись отчаянно в техно. Много воды утекло с тех пор: стремительное начало в рейв-фотографии, три года работы с Мона, команда заботы, воспеты взлет и больное падение. Я даже на какое-то время разлюбила рейв, но и это прошло. Что остается неизменным- это любовь к техно. Прямая бочка она такая 🖤
#diary
Знаете, неожиданно для себя я вдруг поняла, что действительно слишком увлеклась этой идеей предстать идеальной ибо когда человек ( не важно кто он тебе отец или сосед) обесценивает любые твои достижения вне зависимости от сферы этих достижений
Грубо говоря, вот за последние пять лет ты волонтерил в приюте, стал фин куратором пяти животных, а это значит буквально 5 спасениях жизней, два года проработал в компании и зарабатывал деньги, но более ты там не работаешь, стал писать картины и даже провел выставку и тп. То есть буквально все на свете, но человек напротив обесценивает абсолютно все. Благотворительность- это вложения, а не доход. Если не работаешь больше в той компании, то какая разница сколько зарабатывал, а выставка без продаж работ не имеет никакого значение. И вдруг я осознала очень четко и ясно, что я так боялась разочаровать, что почти не заметила как разочаровалась сама. И я выбрала себя
Пусть я не образца 2017 когда я реально рубила бабки, и даже в 2022 шальные деньги на крипте были очень большими, просто пошли не туда. Тем не менее… миллион в месяц я зарабатывала. Было дело. И тратила тоже миллион в месяц. Тоже было дело. Пусть это и случалось эпизодично с высоты прожитых лет. Но это было и я знаю эти ощущения, и мне не жалко ни каких-то огромных трат в никуда в том же 2022-2023 или в том, что я вышла и крипто торговли на биржах в 2018 ( у меня были везде про аккаунты с достаточно большими депозитами). Рынок крипты хаотичен и создан теми кто им и манипулирует. Рынок тебя все равно вышибет сколько не спорь. Вопрос времени. Я вынырнула вовремя. Это тоже достижение. В плюсе
В общем, я настолько видимо нервничала, что мне прямо вот до талова несвойственно, что неведомый недуг свалил меня с ног перед встречей и аккурат после. Причем после аж на неделю. Это не была простуда, я чувствовала боль в тех местах где нет органов, спала сутками пока, наконец, не убедилась, что ее величество Психосоматика вошла в чат. И приняла это как данность
Сегодня первый день когда я прямо в боевой готовности все делать и решать и повторюсь, что я выбираю себя хотя люблю очень много людей. Это не эгоизм, а здоровое отношение к себе. Только уважая себя самого и трезво понимая текущие достижения и провалы ты можешь двигаться вперед, расти и отдавать любовь своим близким
Мне было прикольно погрузиться в воспоминания о 2010-х. Спасибо, блин, тренды в запрещеннограмме. Но прошлое есть прошлое. Круто, что есть, что вспомнить. И круто, что можно опираясь на прошлое быть планкой для самого себя
Пусть я сейчас возможно звучу смешно и неубедительно, с плохими охватами и практически не являюсь никаким примером и авторитетом, но я сегодня являюсь лучшей версией себя за последние 3 года. И это- достижение…
#diary
Мой год начался очень насыщенно. Точнее, еще в декабре я начала готовиться к встрече с близким мне человеком с которым не общалась порядка десяти лет. Я настолько в эту подготовку нырнула в омут с головой, что в какой то момент сделать все идеально стало навязчивой идеей
Параллельно со всем этим я начала работать с психологом и мы проговаривали о том, что никто ничего никому должен, быть собой и сохранять себя настоящего каким ты являешься в текущий период жизни намного важнее, чем соответствовать чужим ожиданиям. Я это все прекрасно понимала и до наших сессий и тем более все раскладывалась по полочкам с каждой нашей онлайн встречей. И, скажем так, мы сошлись на том, что предстоящая встреча стала тем самым волшебным пенделем и то, что я не могла никак наконец закончить: это сделать генеральную уборку, наконец разобраться с финансами, доходами и расходами, облагородить дом и вообще на энтузиазме можно достаточно долго лететь вперед решая все дела на своем пути. Следующий шаг- это тебя уже прет твоя продуктивность. Так что энтузиазм- это мощная энергия
Я поставила себе цели которые в данный момент моей жизни изначально казались невыполнимыми. Рассчитывая на себя ( хотя меня поддерживает морально и материально бывший супруг и с ним мы вообще сейчас абсолютно в прекрасных отношениях, научились соблюдать личные границы, не давать оценку действиям друг друг и вообще быть терпимее. И пусть работы еще предстоит много мы с ним проделали колоссальный путь). Тем не менее я расписала все, что хочу купить на подарки, в дом, сделать весьма серьезные бьюти-процедуры которые дают действительно явный эффект и, соответственно, стоят). Список оказался внушительным и так как я еще набираю былую форму к доходу который меня устраивает я еще не вернулась. Неожиданно я поймала себя на том, что в голове все ясно и я четко ставлю себе цели, подцели и, разумеется, мечты. У меня есть понимание как все это достичь. И пусть моя цель к 7 января когда, наконец, встреча случилась я выполнила все запланированное и даже больше, и несказанно этому рада. Я сама от себя не ожидала такой конкретики. Пусть и в былые времена я легко делала иксы от тех цифр, которые были для меня определяющими в этом году, но я выполнила все запланированное. Вообще все #diary
Продолжение 👇