Можно ли в 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
🇮🇪 ¿La primera rebelión en Europa contra los gobiernos 'woke'?
En Irlanda, un nuevo grupo emergente que se llama a sí mismo el Nuevo Movimiento Republicano ha declarado a los funcionarios locales como "objetivos legítimos".
El grupo afirma que sus acciones están impulsadas por la ira frente a las políticas de inmigración masiva y la presión por el adoctrinamiento sexual de los niños en las escuelas del país.
Aquí todas estas cosas siempre hay que tomarlas con mucho escepticismo. ¿Será la primera vez que estos gobiernos usan a supuestos grupos al margen de la ley como excusas para poder justificar la implementación de medidas y leyes extremadamente duras contra la población en pro de 'garantizar la seguridad'?
¿Será la repetición de la ya conocidaOperación Gladio?
#irlanda
———
Únete a la lucha por la verdad en
📱Telegram
📱YouTube
📱X (Twitter)
#Irlanda#transportes Huelga salvaje de choferes de buses en Limerick, Munster. https://www.live95fm.ie/news/live95-news/huge-disruption-as-no-buses-operating-in-limerick-due-to-unofficial-dispute/
#Elezioni#Irlanda#Referendum
Risultati definitivi:
Affluenza: 44,36%
"Sei favorevole al 40esimo emendamento, che prevede l'eliminazione dei riferimenti alla "vita domestica" e ai "doveri domestici" della donna nella Costituzione, con l'aggiunta di un nuovo articolo sulla cura familiare?"
No: 73,93%
Sì: 26,07%
❌Referendum bocciato❌
Con il 73,93% dei voti contrari, questo referendum rappresenta la più grande sconfitta nella storia dei referendum irlandesi, sorpassando il record del 2015, quando il 73,06% votò contro il ridurre l'età minima per candidarsi alla carica di Presidente da 35 a 21 anni.
@OsservatorioEsteri
#Elezioni#Irlanda#Referendum
Risultati definitivi:
Affluenza: 44,36%
"Sei favorevole al 39esimo emendamento, che prevede la modifica dell'articolo 41 della Costituzione (inserendo le parole “fondati sul matrimonio o su altre relazioni durevoli” e l'eliminazione delle parole “su cui si fonda la Famiglia”)?"
No: 67,69%
Sì: 32,31%
❌Referendum bocciato❌
@OsservatorioEsteri
San Patrizio non è solo trifogli, cappellini verdi e birra .
È anche storia, rivolta, sangue versato per l’identità di un popolo.
Oggi, giorno in cui l’Irlanda viene celebrata nel mondo, vi portiamo davanti alla tomba di Bobby Sands a Milltown Cemetery, Belfast.
Un ragazzo di 27 anni che ha scelto di morire per difendere la libertà di un popolo intero.
La lotta non è finita con lui nel 1981.
Vive ancora in ogni pietra, in ogni ricordo.
Buon Lá Fhéile Pádraig, ma ricordate: l’Irlanda vera porta anche cicatrici. 🇮🇪
#irlanda#accaddeoggi#storia#politica#notizie
#Irlanda. Disturbios en barrios populares de Dublín tras ataque a cuchillo a niños de primaria por un desequilibrado, instrumentalizados y animados por la extrema derecha -aprovechando que el atacante tenía origen argelino- y convertidos en #saqueos
https://www.irishtimes.com/crime-law/2023/11/24/dublin-attack-and-riots-how-thursday-unfolded/
La respuesta de los políticos, los medios, sus opinadores... echa a los chavales en brazos de la extrema derecha en una respuesta tipicamente clasista que se niega a entender que son el producto de algo a medio camino del miedo a la lumpenización y la lumpenización misma
https://www.irishtimes.com/opinion/2023/11/24/fintan-otoole-these-pitiful-thugs-do-not-act-for-us-speak-for-us-or-burn-buses-for-us/
Aunque se publique alguna tibia voz disidente
https://www.irishtimes.com/opinion/2023/11/26/spicebag-youll-never-see-eye-to-eye-with-someone-who-thinks-youre-an-animal/
En #Francia, casi al mismo tiempo, una fiesta de pueblo de 500 habitantes acaba en batalla campal entre adolescentes y jóvenes del banlieu (que habían sido parados por el guardia de la entrada por no haber reservado y llevar cuchillos) y los asistentes (menos otros amigos suyos que habían llegado horas antes y tomado parte en la fiesta sin problemas). Resultado, un chico del pueblo muerto a cuchilladas.
https://www.marianne.net/societe/police-et-justice/on-est-la-pour-tuer-des-blancs-deroulement-de-la-soiree-ce-que-l-on-sait-a-ce-stade-du-drame-de-crepol
La extrema derecha exprime la oportunidad de presentarlo como algo ligado a las #migraciones e intenta tomar el pueblo, sin éxito
https://www.lemonde.fr/societe/article/2023/11/26/meurtre-de-thomas-a-crepol-des-militants-d-extreme-droite-samedi-soir-a-romans-sur-isere-pour-en-decoudre_6202465_3224.html
#Irlanda
Leo #Varadkar (#FG|EPP) ha rassegnato le dimissioni dalla carica di Primo Ministro e da leader di FG, dopo i pessimi risultati ottenuti dal governo nel referendum dell'8 marzo.
@OsservatorioEsteri
#Irlanda
Crisi di Governo anche in Irlanda. Il Taoiseach Micheál #Martin (#FF|RE) e il suo Governo hanno perso la maggioranza dopo che Joe #McHugh (#FG|EPP) è stato sospeso per aver rimesso la Whip durante una votazione volta a risarcire i proprietari di case le cui proprietà sono state colpite dallo scandalo Mica.
Aggiornamenti su ▶️@UltimoraPolitics24
@UltimoraPolitics
#UE#EuroParlamento
Con 515 voti favorevoli, 74 contrari e 44 astensioni, l'Europarlamento ha approvato una mozione che stabilisce che a partire dalla prossima legislatura, il Parlamento Europeo passerà da 705 a 720 seggi. Di seguito i cambiamenti:
#PaesiBassi: +2 seggi
#Francia: +2
#Spagna: +2
#Belgio: +1
#Danimarca: +1
#Irlanda: +1
#Lettonia: +1
#Austria: +1
#Polonia: +1
#Slovenia: +1
#Slovacchia: +1
#Finlandia: +1
@OsservatorioEsteri
#Elezioni#Irlanda#Presidenziali
Risultati del 1° conteggio:
Catherine #Connolly (supp. #SF-#LAB-#SD-#PBP-#S-#GP-#Redress)|LEFT|S&D|G/EFA: 63,36%
Heather #Humphreys (#FG|EPP): 29,46%
Jim #Gavin (#FF|RE): 7,18%
Catherine Connolly eletta nuova Presidente della Repubblica d'Irlanda.
In foto, la mappa del voto.
@OsservatorioEsteri