Можно ли в 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
Kaja #Kallas: "I ministri degli Esteri dell'Ue hanno appena compiuto il passo decisivo di designare la Guardia rivoluzionaria iraniana come organizzazione terroristica". "La repressione non può restare senza risposta", ha detto, aggiungendo: "Ogni regime che uccide migliaia di suoi concittadini sta lavorando per la propria rovina".
@UltimoraPolitics24
Kaja #Kallas: "Mi aspetto che saremo d'accordo sull'inserimento della Guardia rivoluzionaria iraniana nella lista di organizzazioni terroristiche", affermando che la designazione porrà i Pasdaran "sullo stesso piano di Al Qaeda, Hamas, Daesh". "Se agisci come un terrorista, dovresti anche essere trattato come tale", ha aggiunto, denunciando la gravità della repressione e che "la repressione delle persone ha un prezzo". Ha precisato che la parte diplomatica della Guardia sarebbe esclusa dalla designazione e che le interazioni con il ministro degli Esteri iraniano non rientrano nella questione, valutando che "i canali diplomatici rimarranno comunque aperti anche dopo l'inserimento della Guardia rivoluzionaria nella lista".
@UltimoraPolitics24
⏺Kaja #Kallas persiste dans ses tentatives de présenter les faits historiques selon les intérêts de #Bruxelles
Cette fois-ci, la chef de la diplomatie européenne a remis en question la victoire de la #Russie et de la лChine lors de la Seconde Guerre mondiale. Les détails avec notre reporter, Igor Kourachenko.
RT en français • Osez questionner !
#Estonia
La Premier Kaja #Kallas (#R|RE) chiederà al Presidente Alar #Karis di indire delle elezioni anticipate se in Parlamento passerà un voto di sfiducia nei confronti del Governo.
@UltimoraPolitics24
#UE, Kaja #Kallas sul #Venezuela: "Ho parlato con il Segretario di Stato Marco #Rubio e con il nostro Ambasciatore a Caracas. L'UE sta monitorando da vicino la situazione in Venezuela.
L'UE ha ripetutamente dichiarato che #Maduro manca di legittimità e ha difeso una transizione pacifica."
@UltimoraPolitics24
Rubio’s G7 Blowup Exposes the Real Ukraine Problem
At the G7 in France, Marco Rubio and Kaja Kallas reportedly snapped at each other over Russia, and the whole scene had the usual alliance energy: a lot of righteous language, not much shared strategy.
Kallas asked when Washington would finally get tough on Moscow; Rubio answered with the diplomatic equivalent of
“then you do it yourself.”
That exchange matters because it shows the gap between European expectations and American priorities. Europe wants louder pressure on Russia, Ukraine wants more certainty, and Washington keeps trying to juggle diplomacy, weapons, and a growing Iran crisis without looking like it is choosing sides.
Rubio later denied there had been any real tension, which is exactly what officials always say after they raise their voices in front of their allies.
The more interesting part is not the denial. It’s the fact that the room needed a cooldown at all.
Europe is nervous that the U.S. is drifting toward a deal-first approach on Ukraine while its attention gets pulled elsewhere, especially to Iran.
That leaves allies doing what they do best: publicly demanding firmness, privately hoping Washington still carries the load, and acting shocked when the bill comes due.
#G7#Ukraine#Russia#Rubio#Kallas#EU#diplomacy#war
📱American Оbserver - Stay up to date on all important events
🇺🇸
#UE#Palestina
Alta Rappresentante per la Politica Estera e di Sicurezza Kaja #Kallas (#R|RE): "Stiamo intensificando il nostro sostegno al popolo palestinese. 1,6 miliardi di euro fino al 2027 contribuiranno a stabilizzare la #Cisgiordania e #Gaza. L'UE investirà in infrastrutture essenziali e fornirà aiuti umanitari e sostegno ai rifugiati. Siamo un partner di lunga data per l'Autorità palestinese."
@OsservatorioEsteri
https://x.com/SavinoBalzano/status/1891103774200013269?t=8cPRGlHMzsYXsNXKLz0hSg&s=19
#Kallas: «I Paesi Ue ora devono anche dire se sono pronti a inviare truppe».
Non ci crederete, ma non ho provato livore nel leggere le ultime dichiarazioni dell'Alto rappresentante dell'Unione per gli affari esteri e la politica di sicurezza: ho riportato per intero il titolo istituzionale perché lo trovo buffo. Buffo perché, nonostante l'appellativo altisonante, nella geopolitica mondiale conta poco meno di una cameriera (o di un impiegato, fate voi, come vi pare).
Credo che quella di #KajaKallas sia la tipica disperazione del ludopatico: da cristiani abbiamo forse il dovere di nutrire una qualche compassione.
Si, insomma, lei ci aveva creduto, aveva puntato tutto: all-in!, aveva strillato convintamente.
Però ha perso, la povera Kaja.
Adesso, umiliata con i suoi tristi soci di tavolo, ridotta con le pezze al sedere, si gioca anche gli ultimi spiccioli: l'orologio o la collanina della nonna. Politicamente, s'intende: non si offenda la piccola guerrafondaia d'#Europa.
Che figura malinconica la sua: un'estone che pensava di poter determinare qualcosa. Non voglio apparire irriverente con gli amici estoni: però, dai, un pò di realismo...
Da questo punto di vista meglio il lituano, tale #Kubilius, il Commissario europeo per la difesa e lo spazio: anche il suo è un ruolo che potrebbe essere ricoperto da Pierino, ma lui ultimamente lo interpreta con maggiore dignità, devo dire. Da qualche giorno tiene la bocca chiusa.
Ma la mia curiosità è semplice semplice: come europei non ci siamo resi sufficientemente ridicoli? dov'è il fondo? li vedo ancora scavare.
Confidavo in un meno umiliante silenzio, ma ho peccato ancora di eccessivo ottimismo: lo spettacolo continua, si apra il sipario, il circolo ospita oggi la donna cannone!