Можно ли в 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
Married at 12
#video#Gypsy
Russian Gypsy boys get married when they’re 10 to 12 years old. Girls tie the knot when they’re a bit older, from 15 to 16. The newlyweds are barely acquainted, but they’ll have a lifetime to get to know each other, as adults say. Kids have no say when it comes to choosing their future spouse. The groom's family has to pay a hefty dowry for the bride. A young wife is expected to take care of most of the household chores. Unlike her husband, a Gypsy wife can't work or study. While other Gypsy traditions are fading away, child marriages live on. This is what a Gypsy wedding looks like.
Follow: https://t.me/rtdocumentary
Christian Escoude & Francis Lockwood — Gypsy Swing (Encore Merci, 2015)
#gypsy#jazz#manouche#France
Цыганский джаз, исполненный в акустическом стиле с использованием аккордеона, скрипки, пианино, гитары и контрабаса. Авторство принадлежит двум мастерам, джаз-мануш гитаристу Кристиану Эскуде и джазовому клавишнику Фрэнсису Локвуду.
Spotify | AppleMusic
Zece Prâjini's Peasant Brass Band — Fanfare paysanne de Zecz Prâjini (Buda Records, 1996)
#traditional#brass#gypsy#Romania
Ансамбль румынской цыганской народной музыки из села Зеце Прэджини под городом Яссы. В музыке коллектива очень много балканской краски. Общий стиль исполнения очень быстрый, традиционный, акустический, но тем не менее напоминающий работы Горана Берговича для фильмов Эмира Кустурицы, для Андерграунда в частности. Частично альбом был записан в 1989 году в концертном зале Филармонического оркестра города Яссы, а частично – во время живого выступления в родном селе коллектива в 1993 году. Альбом входит в серию Musique Du Monde французского лейбла Buda Records, но так же был выпущен в Румынии лейблом Muzeul Țăranului Român под другим названием и с другой обложкой.
🔗Spotify | AppleMusic
Various Artists — My Greatest Revenge: Flamenco Recordings, 1904-1938 (Death Is Not The End, 2024)
#traditional#field_recording#gypsy#flamenco#Spain
Коллекция ранних записей cante jondo («глубокой песни») — основополагающего стиля андалузского фламенко. Cante jondo выделяется своим эмоциональным, проникновенным вокалом и сложным гитарным аккомпанементом.
Фламенко зародилось в фольклорных традициях Андалусии и было сформировано усилиями преимущественно цыган, превратившись в самостоятельное музыкальное явление уже к XVIII веку.
Сборник включает одни из первых записей фламенко, сделанных в начале XX века. Среди исполнителей — El Mochuelo, La Andalucita, Niño de Cabra и Juan Breva, чьи выступления передают меланхоличную и задумчивую атмосферу жанра, несмотря на низкое качество записи, обусловленное техническими ограничениями того времени.
🔗Bandcamp | Telegram
Mandino & Note Manouche — Gypsy Swing From Alsace (Materiali Sonori, 1994)
#gypsy#jazz#manouche#Alsace#France
Мандино Рейнхардт и компания исполняют эльзасский джаз-мануш. Эльзас — историческая область на востоке современной Франции, которая граничит с Германией и Швейцарией. В Эльзасе до какого-то времени был распространен эльзасский диалекте немецкого языка. Там же очень развито направление цыганского джаза. Есть даже большое интервью с Мандино Рейнхардтом для журнала Jazz & Culture об этом направлении в Эльзасе.
🔗Spotify | AppleMusic
Mólo Sâyat — ĦADÃEQ (Zephyrus, 2021)
#jazz#gypsy#klezmer#oud#Belgium#Lebanon
В 2010 году группа студентов киношколы в Брюсселе начала исполнять приправленные джазом традиционные средиземноморские песни: от греческих, итальянских и балканских до ливанских и египетских. Руководил проектом саксофонист Mathieu Najean, а место вокалиста занял ливанский певец Pôl Seif. Выпустив свой первый альбом Burj Babil в 2012 году, Mòlo Sâyat отыграли бесчисленное количество концертов в Европе и съездили в тур по Канаде. В 2015 году группа взяла перерыв, но снова собралась в Ливане в 2019 году. Результатом стал новый альбом Hadaeq, на котором нашлось место и средиземноморскому и фолку, и клезмеру, и французскому шансону. На нём можно услышать звучание арабского уда, ближневосточной перкуссии и нечетные музыкальные размеры.
Spotify | AppleMusic | Bandcamp
Gypsy Ska Orquesta — Sabarabulé (2020)
#ska#reggae#balkan#cumbia#swing#gypsy#jazz#Venezuela
Gypsy Ska Orquesta родилась на улицах Каракаса, Венесуэла. Музыка группы представляет собой необычное сочетание ска, кумбии, свинга и цыганской музыки Балканского полуострова. Их последний студийный альбом Sabarabulé был записан и спродюсирован Альберто Переса в Барселоне осенью 2019 года. На композиции Mandibuleo отметилась немецкая кларнетистка Фридерика фон Оппельн-Брониковски из группы Herje Mine, исполняющей балканскую музыку.
Spotify | AppleMusic | Bandcamp
Petrojvic Blasting Company — A History of Public Relations Dilemmae (Self-released, 2010)
#gypsy#brass#jazz#accordion#balkan#trombone#trumpet#tuba#United_States
Единственный альбом цыганской группы из Лос-Анджелеса, основанной братьями Джастином и Джошем Петройвичами. Музыка группы сочетает в себе элементы традиционного джаза и звуки исторической родины братьев, балканского полуострова. Хотя у Blasting Company есть один альбом с своими песенями, записанный уже десять лет назад, группа исполняет традиционную балканскую музыку и предпочитает живые выступления на свежем воздухе. Petrojvic Blasting Company также принимали участие в написании ряда саундтреков, самый известный из которых — к мультфильму Патрика Макхэйла «По ту сторону изгороди».
🔗Spotify | AppleMusic
Мамуля!С Твоим Днём❤️Ты всё знаешь✨А эта фотокарточка лучше всех слов выражает наше мощное суперПартнёрство!👭Мы тебя очень любим!Будь Мамчик..будь счастлива!💫
#mom#birthdaymom#birthdaygirl#happybirthday#сднемрождения#именинница#ларико#нуцка#лялися#мамчуля#мамико#лариска#gypsy#мама#сднемрождениямамы#мамампосвящается#июль#positivevibes#moodoftheday#photooftheday#youngandbeautiful#purelove#heavenonearth