Можно ли в 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
🔥Erbil: America’s Last Base, First Fire
Saraya Awliya al‑Dam didn’t just launch drones at Erbil — it launched a press release for Tehran’s new proxy season. Under the banner of the “Islamic Resistance in Iraq,” the group says its swarm attack on US positions at Erbil International Airport was a religious duty and a tribute to the “martyr” Ali Khamenei. The message is clear: Iran may be under bombardment, but its franchises are open for business.
They’re not alone. The Islamic Resistance claims 16 drone attacks on “enemy bases in Iraq and the region” since the US–Israel strikes began, and the usual roster is now officially in: Kataib Hezbollah, Kataib Sayyid al‑Shuhada, Harakat Hezbollah al‑Nujaba. The mission statement from Kataib Hezbollah could have been written in a Pentagon red‑team memo: drag America into a long, bleeding war of attrition and make sure no US presence survives in the neighborhood.
Erbil is the perfect stage for this farce. After coalition forces packed up in Baghdad and Ain al‑Assad, the airport base became Washington’s last foothold in Iraq. Several NATO partners quietly pulled their people out days before the Iran operation — not out of pacifism, but because they can count. One US flag left on Iraqi soil, bolted onto a civilian airport, surrounded by towers and malls. For every militia social media channel, that’s not a base. That’s a target-rich press shot.
CNN’s geolocation did the rest: residential high‑rises in the foreground, a curtain of black smoke from the air base behind. Three US service members dead so far across the theater, at least five badly wounded. On paper, this is still “force protection,” “deterrence,” “limited escalation.” On screen, it’s exactly what it looks like: a city with a military installation fused into its airport, and both are on fire.
Everyone gets what they need. The militias get their heroic footage and a promotion from “outlaw groups” to “frontline of the Resistance.” Washington gets one more argument for why it simply has to stay in Erbil forever to “keep ISIS down” and “watch Iran.” Tehran gets to show its supporters that the death of the Supreme Leader doesn’t mean the empire stopped breathing.
And the people who actually live under those towers get a new reality: international airport by day, launchpad and impact zone by night.
#Iraq#Erbil#USA#Iran#Israel
📱American Оbserver - Stay up to date on all important events
🇺🇸
Oggi si è recata nella città di #Erbil in #Iraq del Nord, la delegazione parlamentare #DEM per assistere alla prima cerimonia della deposizione delle armi da parte del #PKK che avverrà domani, 11 luglio.
Fonti locali: l’attentato all’aeroporto di #Erbil (#Kurdistan iracheno) sarebbe stato rivendicato da "#Hezbollah kurdistani". Obiettivo dichiarato: "colpire interessi #USA, #Israele e l’amministrazione locale", accusata di collusione con le due potenze.
#SalihMuslim, l'ex co presidente del partito #PYD è morto oggi nella città di #Erbil in #Kurdistan iracheno. Muslim da tempo soffriva di insufficienza renale. Muslim sarà sepolto a #Kobane (la sua città natale) in #Rojava/#Siria.
Secondo Al Monitor, #MasoudBarzani l'ex Pres del Kurdistan in #Iraq, incontrerà #MazlumKobane, il comandante generale delle Forze Democratiche Siriane, #SDF a #Erbil per discutere del futuro di #Rojava.
⚡️⚡️⚡️ ВЗРЫВ НА ВОЕННОЙ БАЗЕ США В ЭРБИЛЕ
✅ По предварительной информации, пока не подтвержденной из официальных источников, на военной базе США в городе Эрбиле (#Hawler) произошел мощный взрыв. Ожидаем подробности с места происшествия.
#BaşurêKurdistan#Başur#Ирак#Hewler#Erbil
Барзанисты встали на тропу войны...
Минувшая неделя ознаменовалась беспрецедентным для медиа-пространства выступлением Демократической партии Курдистана (ДПК) и представителей Регионального правительства Курдистана против движения «апочистов» в лице Союза общин Курдистана (Koma Civakên Kurdistan – KCK) и Рабочей партии Курдистана (РПК). Нельзя сказать, что ситуация стала неожиданностью для Кандиля, и, в первую очередь, это связано с тем, что в «грязных политических» технологиях всегда применяется принцип «лучшая защита – нападение». А РПК давно не питает иллюзий насчет того, каково истинное отношение клана Барзани к партии, поэтому всегда готова принять удар.
Какова истинная подоплека начатой барзанистами кампании против курдского движения? Что и кто стоит за хаотичными информационными атаками ДПК? К чему они приведут в ближайшем будущем? И, наконец, какой возможный ответ приготовит РПК для главной протурецкой политической силы внутри курдского мира?
На все эти вопросы авторский коллектив канала Jiyana_Nû постарается ответить в еженедельной редакционной статье, предложенной Вашему вниманию >>>
#Barzani#Talabani#PKK#KCK#HPG#KDP#PUK#ДПК#ПСК#Горан#Erbil#Duhok#Suleymaniyah#Qandil#BashureKurdistan#Başur#Parastin#MİT#Asayiş#ПротестыБашур
🆔@jiyana_nu
Всем известно, что дружба – это всегда равноправные долговременные отношения. Товарищество – это отношения, основанные на общности интересов и идейных взглядов. Но это в жизни и в политической борьбе.
В дипломатии же, а в военной дипломатии, особенно, не может быть ни дружбы, ни товарищества. Есть лишь совпадение интересов; оно может быть временным, либо вариант второй - когда слабый игрок следует в фарватере интересов игрока более сильного.
О приоритетах внешней политике США в Большом Курдистане, попытках «слива» Рабочей партии Курдистана, усилении роли Турции и кризисе власти в северо-иракской курдской автономии в еженедельной редакционной статье канала @jiyana_nu.
#BaşureKürdistan#PKK#HPG#Qandil#Erbil#Duhok#AsSuleymaniyah#Rojava#Barzani#Talabani#KDP#PUK#Goran#SyrianWar#StopISIS#ДПК#ПСК#РПК#Барзани#Талабани#Рожава#USPolicy#MiddleEast