Можно ли в 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
🔵🔴Pacto de pareja de Mapi León y Engen para la final de Oslo
Mapi León e Ingrid Engen vivirán una final de Champions League muy especial el próximo sábado en Oslo. Las futbolistas de Barça y OL Lyonnes mantienen una relación sentimental tras coincidir como azulgranas durante cuatro temporadas, pero desde el pasado verano tomaron caminos distintos que les han obligado a mantener... #Barça#FCB
🤕El Dr. Surós, experto en medicina deportiva, analiza la lesión de Fermín: "Yo lo descartaría"
El FC Barcelona, tal y como avanzó Mundo Deportivo, anunció este lunes que Fermín López tendrá que ser intervenido de una fractura en el quinto metatarsiano del pie derecho, algo que le descarta para el Mundial de Estados Unidos, México y Canadá que se inicia el próximo mes de junio. #Barça#FCB
🔵🔴El césped del Ullevaal, del drama a la calma para la final de la Champions femenina
El 31 de marzo se jugó un amistoso masculino Noruega-Suiza (0-0) en el Ullevaal Stadion de Oslo en el que sólo se habló del pésimo estado del césped y provocó un mediático debate en Noruega porque peligró el estado físico de cracks como Erling Haaland y Alexander Sorloth, que son la esperanza del país en el regreso a... #Barça#FCB
🔵🔴La Agencia Tributaria concluye que los pagos a Negreira no eran para pagar árbitros
La Dependencia Regional de Inspección de Cataluña de la Agencia Tributaria ha emitido un informe en el que concluye que los pagos realizados a José María Enríquez Negreira, vicepresidente del Comité Técnico de Árbitros (CTA), procedentes del FC Barcelona no fueron para pagar árbitros ni influir en los resultados... #Barça#FCB
🔵🔴Lamine cumplió el sueño del hijo de Antony
Lamine Yamal (18 años) es uno de los jugadores más admirados del mundo, en especial entre los más jóvenes, y así quedó patente durante el Barça-Betis. La estrella verdiblanca Antony le pidió al joven crack azulgrana si podía conocer a su hijo y Lamine accedió para cumplir con el sueño del pequeño. #Barça#FCB
🔵🔴Las cifras del OL Lyonnes en la Champions revelan el liderazgo de Engen y el peligro de Dumornay
El OL Lyonnes vuelve a situarse, una vez más, en el escenario que mejor conoce: la gran final de la UEFA Women’s Champions League. El conjunto francés, referencia histórica del fútbol femenino europeo y máximo ganador de la competición, se medirá este sábado 23 de mayo (18. #Barça#FCB
⚽Espectacular récord europeo del Barça en tres estadios distintos
Los dos goles de Raphinha y el último de Joao Cancelo certificaron el inédito pleno de 19 victorias de 19 posibles del Barça como local en el Campeonato de Liga. Lo curioso del caso es que han sido tres estadios los escenarios para ello: dos partidos en el Estadi Johan Cruyff, tres en el Olímpic Lluís Companys y 14 en... #Barça#FCB
🔵🔴Flick: "Queremos más títulos, quizás también la Champions"
Hansi Flick mostró su felicidad tras firmar como entrenador hasta 2028, con otra temporada opcional, y exhibió ambición de cara al futuro: "El objetivo es ganar más títulos, quizás también la Champions, trabajaremos para eso, para que el sueño se cumpla", manifestó en las oficinas y a medios del club barcelonista. #Barça#FCB
🔵🔴Oficial: Flick firma hasta 2028 con otra temporada opcional
Hansi Flick firmó el contrato que le liga al Barcelona hasta 2028, más otra temporada opcional, en un acto privado celebrado en las oficinas del club, con el presidente del FC Barcelona, Rafa Yuste; el presidente electo, Joan Laporta; el director deportivo, Deco; y los miembros de la Comisión Deportiva. #Barça#FCB
🔵🔴Emilio Bernad no continuará en el Barça Atlètic
El sueño de Emilio Bernad (26 años) ha llegado a su fin. El portero valenciano lo cumplió a finales del verano pasado, cuando con el mercado a punto de cerrarse el Barcelona le llamó para reforzar la portería del filial. #Barça#FCB
🔵🔴Los trofeos de LaLiga y la Supercopa 2025-26 ya están en el Museu
Los trofeos de la Liga y la Supercopa de España de la temporada 2025-26 ya están en el Museu del FC Barcelona. Poco antes del acto de la firma de la renovación de Hansi Flick las llevaron al Museu el técnico alemán; el capitán de la plantilla, Ronald Araujo; y el presidente del club y el presidente electo, Rafa Yuste... #Barça#FCB
🔵🔴Flick, impactado por el nivel de Abde
El nivel de Ez Abde, actualmente la principal estrella del Betis en su temporada de su definitiva consagración en la élite, dejó impactado a Hansi Flick, técnico del Barça, según informó 'Què t,hi jugues' de SER Catalunya. #Barça#FCB