Можно ли в 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
Всем привет, поскольку сейчас моя песня Russian Girl оказалась на новой волне своей популярности в связи с трендом #russiangirl, то мне важно рассказать вам о своей позиции…
Я давно уже являюсь сторонником осознанного подхода к потреблению и бережного отношения к планете. Многие знают мою активность в вопросе раздельного сбора вторсырья.
Поэтому для любителей тренда мне важно здесь сказать, что в кадре на мне экошуба из искусственного меха бренда Инга Керен. Она же ещё и арт-объект, поскольку создательница этих изделий пишет картины, и на внутренней стороне моей шубы мы видим изображения одной из них! Вот такой эксклюзив. А моя шапка — это винтаж, то есть вещь практически из бабушкиного сундука. Я приветствую именно такое бережное, заботливое отношение к красоте. Пусть красивым будет мир внутри и мир снаружи!
Буду рада видеть здесь не только тех, кто любит мои песни, но и также старается беречь нашу планету.
Жду встречи на своих ближайших концертах:
4.01.24 — Питер, клуб Джаггер
25.01.24 — Москва, клуб 16 тонн
P.S:
Muah — Оксана Севостьянова
А что вы знаете о песне Russian girl?
…я написала её в 2008 году в Санкт-Петербурге, записала в Париже в 2009 и выпустила в России в формате сингла в 2010, а позже, в 2011 года она вышла в качестве одной из песен альбома «C’est la vie». С 2008 по 2010 годы я жила во Франции и работала с известной французской группой «Nouvelle Vague»: участвовала и в записях, и в концертах. У нас было много гастролей – практически по всему миру. «Russian Girl» была записана с музыкантами «Nouvelle Vague» под руководством продюсера Марка Коллина на студии неподалеку от Монмартра вместе с другими треками моего первого сольного альбома «C’est la vie!». Я много времени проводила вместе с французскими коллегами и остро ощущала разницу наших менталитетов. Как-то я серьезно сейчас завернула, а ведь эту песню нельзя воспринимать без иронии! Да, я здесь пою на английском, но с нарочитым акцентом. Это такая шуточная игра и стёб на тему стереотипов. Песня стала моей визитной карточкой. Надо отдать должное этому треку – он облетел весь мир и сейчас снова оказался на очередной волне своей популярности! ❤️
Послушать композицию вживую вы можете на всех моих концертах!
P.S: Оксана Севостьянова — MUAH
#jenialubich#женялюбич#russiangirl#slavicgirl
Спасибо всем, кто был недавно на моем концерте в Москве в пространстве «Море музыки», что внутри океанариума на ВДНХ. Этим выступлением я отмечала свой день рождения. И самым главным подарком было то, что вы все пришлии нам всем удалось в буквальном смысле окунуться в море моей музыки. Я хочу поблагодарить каждого зрителя за ваши любовь и поддержку, ия благодарю сотрудников площадки и свою команду, своих музыкантов и тех, кто помогает мне в моем проекте за ваши доверие, творческий подход ко всему и готовность быть со мной на одной волне.
Павел Илюшин — гитара
Дмитрий Турьев — бас
Рома Николаев — барабаны
Алексей Худницкий — звук
Марьям Мурадова — фото
Настя Гоголь — видео
Tory Zak — мой пиджак
By Chris — платье
Елена Полубояринова — MUAH для меня
#Веснавмоихснах
#Ритуальная
#Деньрождения
#Случайныйповорот
#Russiangirl
#Весна
Следующее выступление у нас будет в уютном пространстве джаз-клуба Игоря Бутмана в Москве 26.04.24.
В Петербурге вы услышите программу «Весна в моих снах» 23 мая на Новой Сцене Александринского театра…Все билеты, приобретённые на 23 марта — действительны.
В Татьянин день поздравила именинниц, студентов и всех пришедших со сцены клуба «16 тонн». Пожалуй, это был один из самых бодрых концертов за последнее время! Мне даже вспомнился клуб «Артефак»… А все почему? Потому что танцевальные ритмы, которые заставляют пуститься в пляс, улыбнуться друг другу, порадоваться моменту «здесь и сейчас», помогают настроиться на что-то хорошее. А мне кажется, мы вообще живём в такое время, когда нам всем очень важно настроится на что-то хорошее. Чего и желаю! Здесь несколько фрагментов нашего выступления! Спасибо большое, что пришли! И я благодарю свою команду за то, что вы со мной:
Павел Илюшин — гитара
Дмитрий Турьев — бас,
Рома Николаев — барабаны
Алексей Худницкий — звук
Елена Полубояринова — MUAH для меня
#потанцуйсомной
#метелица
#russiangirl
#рок
#футболка
#сессия
Теперь увидимся весной! 23.03.24, Петербург, Новая сцена Александринки. Подробности сообщу на днях.
Москва, спасибо за концерт! Я была очень рада поделиться с вами своими песнями и джазовыми стандартами, которые максимально созвучны джаз-клубу Игоря Бутмана в Москве, где мы, кстати, выступали впервые! Я получила огромное удовольствие и от возможности исполнить что-то из своего около-джазового и неизданного авторского материала, и от встречи с вами, и я с радостью здесь оставлю на память видео-фрагменты с концерта. Предлагаю немного замедлиться и почувствовать, как это было…❤️
Петербург, встретимся с вами 23 мая на Новой сцене Александринского театра!
#Iwannabelovedbyyou
#Весна
#Summertime
#Колыбельнаятишины
#Часы
#Russiangirl
P.S:
Special thanx моей команде:
Павел Илюшин — гитара
Денис Кириллов — клавиши
Дмитрий Турьев — бас
Рома Николаев — барабаны
Алексей Худницкий — звук
📹 — Настя Гоголь
👗 — Lets Go Dress
💄 — Елена Полубояринова
Подписаться l Концерты l Слушать
23 июня я выступала в Усть-Лабинске на фестивале «Александровская крепость». Это было феерично! Многие приехали из близлежащих краев специально, чтобы меня послушать и даже спеть вместе со мной. Меня удивило, что люди знали слова практически всех песен из сет-листа. Как же здорово встречать в такой далекой стороне свою аудиторию! Одновременно здесь было много людей, которые слышали и видели меня впервые! Я почувствовала вашу любовь! Звук, свет, настрой - все это было на уровне столичных фестивалей! Респект организаторам и моей команде:
Павел Илюшин - гитара
Дмитрий Турьев - бас
Рома Николаев - барабаны
Денис Кот - звук
#Лето
#Колыбельнаятишины
#Часы
#Беззатейно
#Футболка
#Russiangirl
Подписаться l Концерты l Слушать
Спасибо всем, кто был на нашем концерте на крыше дизайн-завода в Москве 6.06! Я почувствовала от вас такое тепло… Прямо пела и наслаждалась тем, что меня не просто слушают. Меня слышат! От этого такой драйв и такое настроение… Я буду рада комментариям от тех, кто там был - поделитесь впечатлениями. А я снова жду встречи! Следующий концерт в столице - 11.08.24, а в Питере я окажусь со своей музыкой вновь на крыше… — на крыше Roof Place! Буду делиться своим творчеством и ощущением полета!
Здесь размещаю видео-фрагменты 6.06.24 на память и для вдохновения! ❤️
#Напролет
#Часы
#Пушкин
#Твоимиглазами
#Случайныйповорот
#Russiangirl
Благодарю свою команду:
Павел Илюшин - гитара
Денис Кириллов - клавиши
Дмитрий Турьев - бас
Рома Николаев - барабаны
Денис Кот - звук
💄: Елена Полубояринова
15 августа — Петербург, ROOF PLACE.
Подписаться l Концерты l Слушать
Я мечтала об этом концерте на Новой сцене Александринского театра давно, и вот, наконец, всё сложилось! Пожалуй, это выступление за все время существования моего проекта было одним из лучших! Казалось бы, мечта сбылась, дело сделано, и теперь можно было бы успокоиться… Но я хочу ещё! И я уверена, что мы что-то очень красивое ещё здесь сыграем и представим! И я уже жду момента, когда я вновь буду стоять на Новой сцене и делиться с вами самым сокровенным через свою музыку, свои песни! А сейчас несколько фрагментов на память и для вдохновения…
#Веснавмоихснах
#40метров
#Вбелыхоблаках
#Портрет
#Myheart’inthehighlands
#Бродский
#Песнядевушки
#Часы
#Колыбельнаятишины
#Russiangirl
Благодарю свою команду:
Станислава Малаховская — кельтская арфа
Павел Илюшин — гитара
Денис Кириллов — клавиши
Дмитрий Турьев — бас
Рома Николаев — барабаны
P.S:
👗: George Shaghashvili
💄: Юлия Павленко
Следующий концерт в Петербурге состоится уже 15 августа на крыше ROOF PLACE.
Подписаться l Концерты l Слушать