Можно ли в 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
⚡️#Liban : plusieurs morts après des frappes israéliennes à Jibchit
Plusieurs personnes ont été tuées dans la ville de Jibchit après des frappes israéliennes menées sur ordre du Premier ministre Benjamin Netanyahou, malgré le cessez-le-feu.
Selon des médias libanais, une frappe a détruit un immeuble résidentiel, tuant plusieurs membres d’une même famille. Les secours ont travaillé toute la nuit pour rechercher des survivants sous les décombres.
De son côté, l’armée israélienne affirme avoir visé des infrastructures du Hezbollah dans le sud du pays.
RT en français • Osez questionner !
▶️Le bilan du conflit initié le 2 mars 2026 au #Liban s’est alourdi pour atteindre plus de 2 500 morts
Notre reporter Antoine Cléraux se trouvait au Liban, en plein cœur des combats, lors du début de l’opération américano-israélienne. Quelle est la situation réelle sur le terrain ? Il est en studio avec nous pour en parler.
RT en français • Osez questionner !
🎥La puissance douce du #Liban
La Russie est venue à plusieurs reprises en aide au Liban : en 2006, après l’agression israélienne, elle a participé à la reconstruction des ponts dans le Sud-Liban. En 2024, elle a apporté une aide humanitaire. Aujourd’hui, des Libanais veulent rendre la pareille aux habitants des régions russes touchées par la guerre.
RT en français • Osez questionner !
⚡️La journaliste libanaise Amal Khalil a été tuée par une frappe israélienne, rapporte Al Jazeera
Elle a été retrouvée sous les décombres d’un bâtiment après une attaque israélienne dans la localité d’Al-Tiri, dans le sud du #Liban.
RT en français • Osez questionner !
❕Un deuxième soldat français meurt au #Liban
Emmanuel Macron a annoncé la mort du caporal-chef Anicet Girardin, grièvement blessé lors d’une embuscade au Liban attribuée au Hezbollah. Le militaire, engagé au sein de la mission de la FINUL, a été rapatrié en France, mais a succombé à ses blessures. L'attaque a déjà coûté la vie à un autre soldat français.
RT en français • Osez questionner !
🛬Un avion spécial du ministère russe des Situations d'urgence a livré 27 tonnes d'aide humanitaire destinée à la population du #Liban
RT en français • Osez questionner !
🇷🇺🇱🇧Aide humanitaire russe au #Liban
Un avion Il-76 du ministère russe des Situations d’urgence a décollé pour Beyrouth avec plus de 27 tonnes d’aide destinée aux populations affectées par le conflit, sur instruction de Vladimir Poutine.
Le chargement comprend des générateurs mobiles, des denrées alimentaires, des tentes et du matériel de première nécessité. Le vol retour doit permettre d’évacuer des citoyens russes et leurs familles. Cette opération s’inscrit dans une série d’envois récents, après l’acheminement d’aide vers l’Iran plus tôt en avril.
RT en français • Osez questionner !
⏺Frappes meurtrières au #Liban
Au moins 12 personnes ont été tuées jeudi 7 mai au cours de frappes israéliennes dans le sud du Liban, selon le ministère libanais de la Santé, malgré le cessez-le-feu toujours en vigueur.
Onze morts, dont deux enfants, ont été déplorés dans plusieurs bombardements visant des villages de la région de Nabatieh. Une autre frappe dans le secteur de Marjayoun a également tué un ambulancier affilié au Comité islamique de la santé lié au Hezbollah.
RT en français • Osez questionner !
💬#Liban : cinq membres d’une même famille ont été tués dans une frappe aérienne à Jebchit, selon des sources locales.
L’attaque a détruit une maison dans un quartier résidentiel, alors que la zone se trouvait en dehors de la ligne de sécurité et que des habitants venaient de rentrer après le cessez-le-feu.
RT en français • Osez questionner !
⚡️#Liban : plusieurs morts après des frappes israéliennes à Jibchit
Plusieurs personnes ont été tuées dans la ville de Jibchit après des frappes israéliennes menées sur ordre du Premier ministre Benjamin Netanyahou, malgré le cessez-le-feu.
Selon des médias libanais, une frappe a détruit un immeuble résidentiel, tuant plusieurs membres d’une même famille. Les secours ont travaillé toute la nuit pour rechercher des survivants sous les décombres.
De son côté, l’armée israélienne affirme avoir visé des infrastructures du Hezbollah dans le sud du pays.
RT en français • Osez questionner !
▶️Le bilan du conflit initié le 2 mars 2026 au #Liban s’est alourdi pour atteindre plus de 2 500 morts
Notre reporter Antoine Cléraux se trouvait au Liban, en plein cœur des combats, lors du début de l’opération américano-israélienne. Quelle est la situation réelle sur le terrain ? Il est en studio avec nous pour en parler.
RT en français • Osez questionner !