Можно ли в 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
“Spero che i #Carabinieri siano più puntuali del Papa”. Con una battuta pronunciata a braccio per scusarsi del ritardo #LeoneXIV ha iniziato il discorso rivolto ai Carabinieri della Provincia di Roma, ricevuti oggi in udienza nella Sala Clementina del Palazzo Apostolico, in Vaticano.
“Mi ha fatto molto piacere sapere che lo scorso Anno giubilare, pur essendo stato particolarmente impegnativo, ha rappresentato per voi un’esperienza arricchente, sia sul piano umano sia su quello professionale - le parole del Pontefice -. E’ stato così per tutti noi che viviamo a Roma: la testimonianza di tanti pellegrini ci ha edificato”.
“Voi siete militari e sapete bene che cosa vuol dire gerarchia, comando, obbedienza - sottolinea il Santo Padre -. Queste parole le usiamo anche nella Chiesa, trasformate dalla novità del Vangelo. E, analogamente, il Vangelo, lungo i secoli, ha permeato le strutture, i criteri, i modi di agire e di pensare delle civiltà dove è penetrato; lo ha fatto non con una rivoluzione violenta, ma con una trasformazione pacifica, dall’interno, attraverso le coscienze, la conversione dei cuori. Così il Vangelo ha portato ovunque il senso di Dio e dell’uomo: il rispetto assoluto della vita e della persona umana, insieme all’adorazione di Dio e di Lui solo”.
Anche oggi, per il Pontefice, “siamo chiamati a riscoprire l’essenzialità del messaggio cristiano e lo stile della Chiesa nascente, per incarnarli nel nostro mondo così diverso, molto più complesso. Ma Gesù Cristo è lo stesso ieri e oggi e per sempre”. “Vi ringrazio per il servizio che svolgete, in particolare intorno al Vaticano e nella città di Roma - conclude Leone XIV -. Vi auguro di compierlo sempre con coscienza retta, fedeli ai principi e alle regole dell’Arma dei Carabinieri e, in quanto cristiani, fedeli al Vangelo”.
https://x.com/SavinoBalzano/status/2016476560887312788?s=20
Domenica scorsa due #carabinieri italiani in servizio presso il Consolato generale d’Italia a Gerusalemme sono stati fermati in Cisgiordania (nei pressi di Ramallah) mentre effettuavano un sopralluogo per preparare una visita di ambasciatori #UE in un villaggio palestinese.
Parliamo di due militari, in servizio presso una sede diplomatica, impegnati nella preparazione di una visita ufficiale di diplomatici: mi parrebbe, a naso, una leggerissima violazione del diritto internazionale.
La prima versione, la nostra, parlava di un colono fanatico. Peraltro, ricordiamoci sempre che in Cisgiordania #Hamas non c’è. #Israele, quasi a volerci sfottere, ci ha fatto sapere che non si trattava affatto di un mezzo matto invasato: no, era un militare.
Da una parte ci siamo noi che, per certi versi, sminuiamo la questione parlando di uno squilibrato; dall’altra loro che ci dicono che si tratta di un membro delle forze armate.
Chissà se può definirsi atto ostile quando un militare di un Paese mette in ginocchio, con le armi puntate, i militari di un altro Paese, per di più stanziati presso una sede diplomatica. Toccherebbe sentire #Tajani, per il quale certe cose però contano fino a un certo punto, lo sappiamo.
A proposito di Antonio: ha tuonato dalla #Farnesina. Il ministro Tajani era molto, molto arrabbiato. Chissà se era furioso tanto quanto quella volta in cui i soldati israeliani attaccarono deliberatamente i nostri militari, stanziati al confine con il Libano e impegnati nella missione UNIFIL delle Nazioni Unite. Anche allora tuonò e, se ricordo bene, si annunciarono inchieste, verifiche. Una sorta di “le faremo sapere”. A proposito: ne avete saputo nulla?
Si diceva, che preparavano l'arrivo di diplomatici UE.
La tizia a capo della diplomazia unionale, la sora #Kallas, niente da dire? Le è sfiggito come il contributo che Russia e Cina hanno speso nel secondo conflitto mondiale?
Ci sarebbe poi un altro, piccolissimo aspetto da considerare. Piccolo piccolo.
L’articolo 87 della nostra Costituzione, in merito ai poteri del #PresidenteDellaRepubblica, è abbastanza inequivocabile: «Ha il comando delle Forze armate».
Il capo delle nostre forze armate è lui, Sergio #Mattarella. Di tutte le forze armate: Esercito, Aeronautica, Marina e anche loro, l’Arma dei Carabinieri. La Benemerita è dunque inclusa.
Orbene, fossi uno di quei ragazzi, mi piacerebbe molto che il mio comandante supremo spendesse una parolina pubblicamente, soprattutto laddove a ricoprire tale prestigiosissimo incarico è un signore particolarmente attivo (per la verità, più su altri fronti) nel rimarcare il ruolo del diritto internazionale e nel puntare il dito contro ogni sua violazione da parte di cosacchi brutti e cattivi.
Insomma, parrebbe proprio che siamo tutti uguali dinanzi alla legge internazionale, ma qualcuno forse è internazionalmente più uguale degli altri.
Noi continuiamo ad attendere.
https://x.com/SavinoBalzano/status/2016476560887312788?s=20
Domenica scorsa due #carabinieri italiani in servizio presso il Consolato generale d’Italia a Gerusalemme sono stati fermati in Cisgiordania (nei pressi di Ramallah) mentre effettuavano un sopralluogo per preparare una visita di ambasciatori #UE in un villaggio palestinese.
Parliamo di due militari, in servizio presso una sede diplomatica, impegnati nella preparazione di una visita ufficiale di diplomatici: mi parrebbe, a naso, una leggerissima violazione del diritto internazionale.
La prima versione, la nostra, parlava di un colono fanatico. Peraltro, ricordiamoci sempre che in Cisgiordania #Hamas non c’è. #Israele, quasi a volerci sfottere, ci ha fatto sapere che non si trattava affatto di un mezzo matto invasato: no, era un militare.
Da una parte ci siamo noi che, per certi versi, sminuiamo la questione parlando di uno squilibrato; dall’altra loro che ci dicono che si tratta di un membro delle forze armate.
Chissà se può definirsi atto ostile quando un militare di un Paese mette in ginocchio, con le armi puntate, i militari di un altro Paese, per di più stanziati presso una sede diplomatica. Toccherebbe sentire #Tajani, per il quale certe cose però contano fino a un certo punto, lo sappiamo.
A proposito di Antonio: ha tuonato dalla #Farnesina. Il ministro Tajani era molto, molto arrabbiato. Chissà se era furioso tanto quanto quella volta in cui i soldati israeliani attaccarono deliberatamente i nostri militari, stanziati al confine con il Libano e impegnati nella missione UNIFIL delle Nazioni Unite. Anche allora tuonò e, se ricordo bene, si annunciarono inchieste, verifiche. Una sorta di “le faremo sapere”. A proposito: ne avete saputo nulla?
Si diceva, che preparavano l'arrivo di diplomatici UE.
La tizia a capo della diplomazia unionale, la sora #Kallas, niente da dire? Le è sfiggito come il contributo che Russia e Cina hanno speso nel secondo conflitto mondiale?
Ci sarebbe poi un altro, piccolissimo aspetto da considerare. Piccolo piccolo.
L’articolo 87 della nostra Costituzione, in merito ai poteri del #PresidenteDellaRepubblica, è abbastanza inequivocabile: «Ha il comando delle Forze armate».
Il capo delle nostre forze armate è lui, Sergio #Mattarella. Di tutte le forze armate: Esercito, Aeronautica, Marina e anche loro, l’Arma dei Carabinieri. La Benemerita è dunque inclusa.
Orbene, fossi uno di quei ragazzi, mi piacerebbe molto che il mio comandante supremo spendesse una parolina pubblicamente, soprattutto laddove a ricoprire tale prestigiosissimo incarico è un signore particolarmente attivo (per la verità, più su altri fronti) nel rimarcare il ruolo del diritto internazionale e nel puntare il dito contro ogni sua violazione da parte di cosacchi brutti e cattivi.
Insomma, parrebbe proprio che siamo tutti uguali dinanzi alla legge internazionale, ma qualcuno forse è internazionalmente più uguale degli altri.
Noi continuiamo ad attendere.