Можно ли в 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
Astăzi am înțeles clar că, în Republica Moldova, pentru cei din PAS, pentru cei aflați la guvernare, nu mai există justiție. Iar dacă justiția nu mai există pentru ei, atunci de astăzi nu mai există nici pentru mine și nici pentru cetățenii Republicii Moldova. #partidulnostru
Astăzi am înregistrat un proiect de lege care permite aflarea, timp de un an, pe teritoriul Republicii Moldova a automobilelor înmatriculate peste hotare, după modelul UE.
#partidulnostru
Сегодня мы зарегистрировали законопроект, который позволяет автомобилям с иностранной регистрацией находиться на территории Республики Молдова в течение одного года по модели ЕС.
#partidulnostru
Fălești are o nouă atracție culturală!
Primarul Alexandr Severin #PartidulNostru a inaugurat Aleea Culturii Eminesciene – un spațiu artistic dedicat lui Mihai Eminescu, amenajat în parcul „Victoriei”. Proiectul, inițiat de artistul Damian Furdui, originar din Fălești, a reunit patru sculptori care au creat lucrări inspirate din opera eminesciană.
---
В городе Фалешты появилась новая туристическая достопримечательность:Аллея культуры Эминеску в парке Победы. Проект был реализован в рамках скульптурного лагеря, посвящённого великому поэту Михаю Эминеску, и стал возможным благодаря поддержке Министерства культуры, примарии Фалешт и других партнёров.
Astăzi am avut o întrevedere cu Nick Pietrowicz, Însărcinat cu Afaceri al Ambasada SUA în Republica Moldova. Am discutat despre evoluția relațiilor moldo-americane, inclusiv despre cooperarea economică și schimburile comerciale, care au un potențial semnificativ încă nevalorificat. Totodată, am trecut în revistă agenda parlamentară a fracțiunii Partidul Nostru.
De asemenea, am abordat subiecte legate de procesul de reintegrare a țării și am avut un schimb de opinii privind securitatea regională, în contextul intereselor strategice ale Republica Moldova.
___
Сегодня у меня состоялась встреча с Ником Петровичем, временным поверенным в делах Посольства США в Республике Молдова. Мы обсудили развитие молдо-американских отношений, включая экономическое сотрудничество и торговые обмены, которые обладают значительным, пока ещё не реализованным потенциалом. Также мы рассмотрели парламентскую повестку фракции Нашей Партии.
Кроме того, мы затронули вопросы, связанные с процессом реинтеграции страны, и обменялись мнениями по поводу региональной безопасности в контексте стратегических интересов Республики Молдова. #PartidulNostru#НашаПартия
E timpul să schimbăm legea: artiștii, actorii, sportivii, oamenii de afaceri și medicii trebuie să rămână în Parlament și să își continue activitatea profesională!
Detalii aici...
__
Пора изменить закон: артисты, актёры, спортсмены, предприниматели и врачи должны оставаться в парламенте и продолжать свою профессиональную деятельность!
Подробности - по ссылке...
#PartidulNostru#НашаПартия
Ședința comună a Guvernului cu reprezentanții fracțiunilor parlamentare. Detalii aici…
—
Совместное заседание правительства с представителями парламентских фракций. Подробности – по ссылке…
#PartidulNostru#НашаПартия
Luare de cuvânt în timpul examinării proiectului privind declararea stării de urgență – ședința Parlamentului din 24 martie 2026.
Detalii aici:
__
Выступление во время рассмотрения проекта о введении чрезвычайного положения - заседание Парламента от 24 марта, 2026 года.
Подробности:
#PartidulNostru#НашаПартия