Можно ли в 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
#Grecia
Con 176 voti a favore, 76 contrari e 46 astenuti, il Parlamento Ellenico ha approvato il disegno di legge volto a legalizzare il matrimonio tra persone dello stesso sesso. La Grecia diventa così il primo paese a maggioranza cristiana ortodossa a legalizzare matrimonio tra persone dello stesso sesso.
@OsservatorioEsteri
#Grecia
È stato emanato il decreto presidenziale che scioglie il Parlamento eletto il 21 maggio.
Il decreto indica ufficialmente come data delle prossime elezioni parlamentari il 25 giugno.
Inoltre, l’atto stabilisce quando si dovrà riunire il Parlamento Ellenico che emergerà dal nuovo turno elettorale, ossia il 3 luglio.
@OsservatorioEsteri
https://x.com/SavinoBalzano/status/1828733256637849625?t=DMrjeag7QsX4y53s51lOQw&s=19
Questa è Itaca e per lei Ulisse affrontò il viaggio più pericoloso di tutti. È l'isola che valeva la sfida a Scilla e Cariddi, la discesa nell'Ade per le parole di Tiresia, l'abbandono del calore di Circe e di Calipso.
Doveva tornare a casa da Penelope, da Telemaco, da Argo.
E c'era la sua terra, il suo popolo da salvare: i proci volevano tutti i frutti della sua meravigliosa isola.
Avverse erano le forze più potenti, quelle di Poseidone, che governava il mare che avrebbe dovuto solcare per tornare a casa, per difenderla e proteggerla.
Per certi versi ricorda le vicende del nostro Paese, che è egualmente meraviglioso e pure merita la salvezza.
Anche sul destino del nostro popolo agiscono forze potentissime e anche dalle nostre parti si vedono pretendenti interessati solo a depredare e razziare.
Chi avrà il coraggio di Ulisse e chi vorrà davvero battersi per la nostra terra?
Chi vorrà e potrà raccontare il viaggio che attraversa la tempesta, oggi che tanti sono ricattati e arrestati se non sostengono il racconto dominante, detenuti da chi pretende di rappresentare i valori della libertà e della democrazia?
Tante volte il destino di Ulisse è stato appeso a un filo, tante volte la disperazione lo insidiava e ogni volta seppe reagire.
E cantano anche adesso le sirene e provano a ingannare: ci invitano alla rinuncia, a non proseguire, e la loro melodia narra falsamente di un popolo che ha osato troppo, che deve sacrificarsi, che deve rinunciare, non varcare oltre il limite delle proprie possibilità.
La verità è che noi possiamo ambire, che meritiamo le nostre bellezze e che qualcuno si batta per esse.
Anche di questa terra, della #Grecia, si disse che aveva sfidato chi non poteva essere sfidato e si fece razzia del suo patrimonio con l'inganno, raccontando che lo si stava preservando per le future generazioni. Parte di quel tesoro è perduto e tanti ci hanno rimesso la vita, lasciando inalterati se non acuiti i tormenti che affliggevano il Paese. Sotto tutela era infatti la ricchezza e la rendita di chi era altrove, di chi non respirava la bellezza, la poesia e il calore di queste coste.
Non deve accadere ancora, a nessuno.
La #Grecia🇬🇷 non era certo il Paese da cui ci si aspettava di più nella reazione alla pandemia. Con una spesa sanitaria corrispondente solo al 5% del Pil, un quarto della popolazione in età pensionabile e soli 560 posti di terapia intensiva, sembrava il preludio di un disastro.
Invece la risposta è stata particolarmente effettiva e oggi si tratta di uno dei Paesi che ha meglio minimizzato le morti da covid. Come è stato possibile?
▶️vai all'articolo
#Grecia#administración Huelga de trabajadores del sector público. https://www.ambito.com/mundo/paro-grecia-contra-la-reforma-laboral-que-habilitaria-la-semana-seis-dias-y-jornadas-13-horas-n5827316
#Grecia#servicios Anuncian huelga los árbitros de fútbol. https://www.sport.es/es/noticias/futbol-internacional/jornada-liga-griega-suspendida-huelga-95640189
#Elezioni#Grecia
Oggi si vota in Grecia!
Abbiamo creato delle schede in cui potete vedere i partiti principali e dove si posizionano ideologicamente.
🔽
https://tinyurl.com/3wnh33p9
@OsservatorioEsteri
The Economist declara país del año a #Grecia por su compromiso con el #militarismo y la transferencia de rentas del trabajo al capital (no sólo ni fundamentalmente extranjero)
https://www.economist.com/leaders/2023/12/20/the-economists-country-of-the-year-for-2023