Можно ли в 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
🇧🇮#Burundi : campagne de vaccination contre le HPV pour les écolières
Les autorités du Burundi ont lancé une campagne nationale de vaccination contre le papillomavirus humain (HPV) destinée aux jeunes filles de 9 à 14 ans, notamment à Bujumbura. L’objectif est de prévenir le cancer du col de l’utérus, principale cause de décès chez les femmes dans le pays, et de protéger la fertilité future.
Soutenue par l’Organisation mondiale de la santé, l’UNICEF et le GAVI (l'Alliance mondiale pour les vaccins et l'immunisation), l’initiative vise à vacciner plus de 80 % des jeunes filles avant d’intégrer ce vaccin aux pratiques courantes.
RT en français • Osez questionner !
#AESinfo | 🇧🇫#BurkinaFaso🇧🇮#Burundi
Coopération AES - UA : Evariste Ndayishimiye est arrivé à Ouagadougou.
Le Président du Faso et de la Confédération des États du Sahel, le capitaine Ibrahim Traoré, a accueilli lundi matin à l’aéroport international de Ouagadougou le président en exercice de l’Union africaine, le général Évariste Ndayishimiye, chef de l’État burundais.
À l'agenda du séjour du Président en exercice de l'organisation continentale, des échanges avec le Président de la Confédération AES et des visites d'infrastructures socio-économiques dans la capitale burkinabè.
Source : @presidencebf
#AESinfo | #BurkinaFaso🇧🇫🇧🇮#Burundi
Évariste Ndayishimiye, président en exercice de l’Union Africaine, est attendu au Burkina Faso.
Le lundi 20 avril 2026, Évariste Ndayishimiye, président de la République du Burundi et président en exercice de l’Union africaine, effectuera une visite d’amitié et de travail à Ouagadougou, chez le président en exercice de la Confédération de l’Alliance des États du Sahel (AES), le Capitaine Ibrahim Traoré.
Source : @Malijetactu
🇧🇮 Des dizaines de personnes ont péri dans l’incendie provoqué par des explosions survenues dans un dépôt de munitions à Bujumbura, la capitale économique du Burundi, a rapporté l’Agence France-Presse (AFP).
#burundi#explosion#incendie#victimes
🇧🇮 Les explosions survenues dans la capitale économique du Burundi, Bujumbura, ont été causées par un incendie dans un dépôt de munitions, a rapporté l’Agence France-Presse, citant le porte-parole de l’armée.
Un grave accident électrique dans le magasin des munitions de la FDNB [Force de défense nationale du Burundi] basé à Musaga est à l'origine des explosions entendues en ce moment dans la capitale économique Bujumbura,
a commenté le porte-parole de l'armée burundaise Gaspard Baratuza.
#burundi#explosions#accident
🇧🇮 Le président burundais Évariste Ndayishimiye a été désigné candidat à la présidence par son parti pour l’élection qui aura lieu l’année prochaine, rapporte Africanews.
Évariste Ndayishimiye, 57 ans, a pris la tête du pays en 2020 après la mort du dirigeant de longue date Pierre Nkurunziza.
#burundi#élections#candidat
L'appello di Papa #LeoneXIV al termine dell'#Angelus: "Inizia oggi la Settimana di Preghiera per l’Unità dei Cristiani. Le origini di questa iniziativa risalgono a due secoli fa, e Papa Leone XIII l’ha molto incoraggiata. Proprio cent’anni fa, per la prima volta, vennero pubblicati 'Suggerimenti per l’Ottavario di preghiera per l’unità dei cristiani'. Il tema di quest’anno è tratto dalla Lettera agli Efesini: «Un solo corpo e un solo Spirito, come una sola è la speranza a cui siete stati chiamati» (Ef 4,4). Le #preghiere e le riflessioni sono state preparate da un gruppo ecumenico coordinato dal Dipartimento per le Relazioni Interreligiose della Chiesa Apostolica Armena. Invito pertanto tutte le comunità cattoliche a rafforzare, in questi giorni, la preghiera per la piena unità visibile di tutti i cristiani. Questo nostro impegno per l’unità si deve accompagnare coerentemente con quello per la pace e per la giustizia nel mondo. Oggi desidero ricordare in particolare le grandi difficoltà che soffre la popolazione dell’est della Repubblica Democratica del #Congo, costretta a fuggire dal proprio Paese, specialmente verso il #Burundi, a causa della violenza e ad affrontare una grave crisi umanitaria. Preghiamo affinché tra le parti in conflitto prevalga sempre il dialogo per la riconciliazione e la #pace. Desidero inoltre assicurare la mia preghiera per le vittime delle inondazioni che nei giorni scorsi hanno colpito l’#Africa meridionale".