Можно ли в 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
Vers un retour du service militaire obligatoire au #Niger ?
Face à la menace persistante des groupes terroristes, les autorités nigériennes envisagent de rétablir le service militaire obligatoire. Le ministre de l'Intérieur, Mohamed Toumba, a présenté cette mesure comme un levier pour renforcer durablement la sécurité et impliquer les citoyens dans la gestion des crises.
En savoir plus sur RT en français
Révélations : Au #NIGER🇳🇪, le président général TIANI accuse à la télévision la France d'avoir passé un deal avec les groupes terroristes de Boko Haram en quittant le Niger, en leur livrant à plusieurs reprises des armes pour qu'ils mènent une guerre contre l'État nigérien.
Question : Tiani a-t-il raison ? Oui, totalement car cela fait des années maintenant que nous alertons et dénonçons cela. Tout le monde, y compris les dirigeants africains, le savent mais la peur de la France les tétanisait tellement qu'ils préféraient se taire. Maintenant, les dirigeants de l'AES le disent ouvertement à la télévision, affirmant que la France est un état terroriste qui soutient le terrorisme, menant une politique de terreur contre les États africains afin de maintenir l'occupation militaire de leur pays par l'armée française. Partagez cette vidéo partout !
@egountchibehanzinTV
ALERTE INFO | Le #Niger🇳🇪 prive le permis d'exploitation d'une mine d'uranium géante à Orano, ex-Areva 🇫🇷. Voilà, enfin en Afrique des dirigeants ont compris que la géopolitique c’est un rapport de force. Les multinationales françaises qui ne respectent pas seront virées une par une. Ce que vous ne faites pas ailleurs, vous ne le ferez plus sur les terres africaines.
La LDNA salue cette décision brave et souveraine des autorités nigériennes à reprendre le contrôle de la mine d’uranium. 💪🏾✊🏾
NB : un idéologue ne comprend que le rapport de force. Lutte continue.
@egountchibehanzinTV
INFO | #Niger🇳🇪 La justice a demandé ce vendredi la levée de l’immunité du président déchu Mohamed Bazoum. Le président déchu pourrait donc faire face à un procès pour complot d’attentat à la sécurité et à l’autorité de l’État, crime de trahison, faits présumés d’apologie du terrorisme et financement du terrorisme. Renversé en juillet dernier par un putsch, Mohamed Bazoum n’a toujours pas rendu sa démission.
@egountchibehanzinTV
🇳🇪#Niger: JNIM has released footage of an IED attack on an army convoy transporting Nigerien armed forces between Samira and Balkab in the Tillabéri region yesterday.
The footage shows that a large number of troops were targeted, as the truck was filled with soldiers.
(via @KargnHasret on X)
#Niger🇳🇪
Un arsenal de guerre saisi au Niger en route vers la Côte d'Ivoire : les États-Unis 🇺🇸 et la France impliqués ?
Les forces de sécurité nigériennes ont intercepté un camion transportant un véritable arsenal de guerre dissimulé sous des vivres, à destination de la Côte d'Ivoire. La découverte a été rapportée dans le Bulletin d'information des forces de défense et de sécurité du 17 au 20 mars 2024.
1140 munitions, 28 douilles de projectiles, 5 jumelles, 2 casques de tir, 3 drapeaux américains, un passeport et un permis de conduire américains, ainsi que des cartes bancaires au nom de deux individus de nationalité américaine** figurent parmi les éléments saisis.
Tous les indices mènent aux États-Unis, laissant planer le mystère sur l'origine et la destination finale de cet arsenal. Une enquête approfondie est en cours pour déterminer les responsables et les ramifications de cette affaire.
📹 : RTN
@egountchibehanzinTV
#Niger🇳🇪
Niamey : Manifestation contre la présence militaire américaine, drapeaux brûlés et slogans anti-colonialistes
Quelques centaines de manifestants ont manifesté dans la capitale du Niger, pour protester contre la présence militaire américaine dans le pays. Les manifestants accusent les troupes américaines d'accentuer l'insécurité et de soutenir la politique française dans la région.
Des drapeaux américains ont été brûlés et des slogans anti-colonialistes ont été scandés lors de la manifestation.
Source : Niger info
@egountchibehanzinTV
🇳🇪#Niger: Niger’s National Guard detained nine suspects after a desert chase near Bilma, seizing weapons and equipment including an M80 machine gun, a FAL rifle, 429 rounds of ammunition, and a Starlink satellite communication device, along with phones and SIM cards.
Most of the suspects were foreign nationals. The men are suspected of possible links to jihadi groups.
(via @ZagazOlaMakama)
🎙Briefing by Deputy Director of the Foreign Ministry’s Information and Press Department Alexey Zaitsev(Moscow, August 9, 2023)
🔷 FM Sergey Lavrov’s schedule
🔷 Ukrainian crisis
🔷 Developments in Niger
🔷 EU Report on Human Rights and Democracy
🔷 Situation in Pakistan
🔷 Hiroshima and Nagasaki bombing anniversary
And more...
📚Read in full
#Ukraine
Having no results on the battlefield to demonstrate to their Western masters, the neo-Nazi regime in Kiev continues to vilely resort to terrorist methods against people in Russia, striking civilian targets, including those far from the front line.
It is revealing that NATO countries are supporting the barbarous actions of the Kiev regime, and continue supplying it with arms, training Ukrainian soldiers and supplying Ukraine with intelligence information for dealing strikes with missiles and drones, including at strictly civilian facilities.
#Niger
We consider it is extremely important to prevent further escalation of tension in Niger. We believe that there is no alternative to the restoration of law and order and the start of an inclusive national dialogue as soon as possible.
We support the mediation efforts undertaken by the African community to help the people of Niger overcome the crisis. At the same time, we believe that an intervention by the troops of the Economic Community of West African States (ECOWAS) in a sovereign state is unlikely to contribute to the achievement of lasting peace in Niger or the stabilisation of the subregion.
#AESinfo | #Niger🇳🇪🇧🇫🇲🇱
3e édition des JDAC de l’AES : Bientôt une compagnie aérienne commune de la Confédération.
Les travaux de la 3e édition des journées de l’Aviation Civile (JDAC) de l’Alliance des Etats du Sahel (AES) tenue du 21 au 22 avril 2026 à Niamey, ont pris fin, dans l’après-midi de ce mercredi 22 avril par la signature de l’acte portant décision de création d’une compagnie aérienne commune.
Source : AIB
#AESinfo | #Niger🇳🇪
La France "fait partie du problème au Sahel", selon le ministre nigérien des Affaires étrangères
L'AES n'a plus confiance en Paris, qui a lui-même admis tout faire pour déstabiliser les pays de la région, a déclaré Bakary Yaou Sangaré:
"Nous n'excluons pas de parler à la France, mais pas dans cette posture-là. Les deux griefs que l'on fait à la France, c'est la condescendance et le deux poids deux mesures"
En plus, Paris cherche à retrouver la "mainmise" sur les ressources de la région, a ajouté le ministre.
Source : @sputnik_afrique