Можно ли в 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
В Сорокском районе Модловы сегодня стартовала масштабная акция по благоустройству памятника "Жертвам фашизма". Поддержку в этой работе оказывают местные жители, представители властей и дипломаты РФ, сообщил глава Координационного совета "Победа" Алексей Петрович.
Монумент, расположенный между городом Сороки и селом Косоуцы имеет уникальное значение, рассказал Петрович.
"Памятник был установлен еще в 1971 году и посвящен всем жертвам Великой Отечественной войны, погибшим на молдавской земле с 1941 по 1944 год. Его воздвигли в то время, когда трагедию людей воспринимали как общую боль", — подчеркнул Петрович.
Глава комитета отметил, что мемориальная акция приурочена к новой знаковой дате — Дню памяти жертв геноцида советского народа, который в этом году впервые будет отмечаться 19 апреля.
"Надеюсь, общими усилиями нам удастся придать этому место вид, достойный памяти павших", — заключил Петрович.
#Pobeda
Sputnik Молдова ¦ Telegram ¦ Сайт ¦ VK ¦ OK ¦ Rutube ¦ Дзен ¦ MAX
82-ую весну освобождения от фашистов встречают сегодня в Тирасполе.
На Мемориале Славы горожане во главе с руководством Приднестровья возложили цветы к могилам павших и почтили их память минутой молчания. #Pobeda
Sputnik Молдова ¦ Telegram ¦ Сайт ¦ VK ¦ OK ¦ Rutube ¦ Дзен ¦ MAX
Уроженцы Молдовы – Герои Советского Союза: летчик-истребитель Степан Колесниченко.
На фронт курсант авиашколы был направлен весной 1942-го. К июлю 1943 года лейтенант Степан Колесниченко был помощником по воздушно-стрелковой службе командира 519-го истребительного авиаполка. Особо отличился в первые дни сражения на Курской дуге в июле 1943 года большие группы самолетов Люфтваффе обрушились на передовые позиции частей Красной Армии.
Последний бой для Колесниченко случился 30 августа 1943 года: он был атакован пятеркой Ме-109 в небе Сумской области и сбит. Он провел 135 боевых вылетов и 27 воздушных боев. На его счету 21 лично сбитый самолет и 4 в составе группы.
▪️За мужество и героизм, проявленные в боях с немецко-фашистскими захватчиками, 2 сентября 1943 года лейтенанту Колесниченко посмертно было присвоено звание Героя Советского Союза. Также награжден орденами Ленина, Красного Знамени, Красной Звезды.
#Pobeda
Sputnik Молдова ¦ Telegram ¦ Сайт ¦ VK ¦ OK ¦ Rutube ¦ Дзен ¦ MAX
В Слободзейском районе Приднестровья, между сёлами Парканы и Бычок, поисковики нашли захоронение времён Великой Отечественной войны.
Братскую могилу обнаружили участники отряда "Память и слава" и молодёжного движения "Звезда".
Во время планового поиска места захоронения бойца Красной армии была найдена могила, в которой покоились, предположительно, 6 павших воинов.
▪️Героев планируют перезахоронить 9 мая, в День Победы, на Мемориале славы в Парканах. Фото: МД "Звезда".#Pobeda
@suvorovdnestr
В Гагаузии покажут фильм о Ясско-Кишинёвской операции
Речь идет о документальном фильме "И поклонимся" режиссёра Николая Гибу. Показ пройдет 16 апреля в Доме детского творчества города Вулканешты.
Фильм посвящён событиям Ясско-Кишинёвской операции - одной из ключевых операций Великой Отечественной войны. В ленте - хроника военных лет и кадры мемориального комплекса "Шерпенский плацдарм".
▪️После показа состоится встреча с председателем комитета "Победа" Алексеем Петровичем.
Вход свободный. #Pobeda
Sputnik Молдова ¦ Telegram ¦Сайт ¦ VK ¦OK ¦Rutube ¦ Дзен ¦MAX
Останки 16 неизвестных советских солдат-освободителей Молдовы от нацизма в годы Великой Отечественной войны захоронят на Шерпенском плацдарме 2 мая, рассказал глава комитета "Победа" Алексей Петрович.
"Готовим церемонию захоронения останков солдат Красной армии, которая пройдет 2 мая на Шерпенском плацдарме. Пока это останки 16 безымянных красноармейцев", - рассказал Петрович, пояснив, что павшие герои были обнаружены в ходе поисковых экспедиций, которые регулярно ведутся на местах сражений Великой Отечественной войны.
#Pobeda
Sputnik Молдова ¦ Telegram ¦Сайт ¦ VK ¦OK ¦Rutube ¦ Дзен ¦MAX
🔸В Дубоссарском районе Приднестровья отмечают годовщину освобождения от немецко-румынских захватчиков.
Первыми были освобождены сёла Дубово, Дойбаны-2, Койково, Гармацкое и Цыбулёвка.
Дату сельчане отмечают 4-го апреля, а в селе Дойбаны-2 торжественная церемония прошла сегодня.
Жители села почтили память воинов-освободителей: при освобождении села погиб 81 красноармеец.
К братской могиле сельчане возложили цветы, а в память о героях пронесли полотнище Георгиевской ленты. #Pobeda
Sputnik Молдова ¦ Telegram ¦ Сайт ¦ VK ¦ OK ¦ Rutube ¦ Дзен ¦ MAX
Поисковики Молдовы присоединились к международной акции "Сад Памяти".
"В рамках международного проекта активисты поисковых организаций высадили на воинском кладбище мемориального комплекса 'Шерпенский плацдарм' саженцы остролистного клена, дополнив заложенную несколько лет назад Аллею Памяти", — рассказал глава комитета "Победа" Алексей Петрович..
По его словам, акция прошла при поддержке Русского дома в Кишинёве. #Pobeda
Sputnik Молдова ¦ Telegram ¦ Сайт ¦ VK ¦ OK ¦ Rutube ¦ Дзен ¦ MAX
В селе Корпач Единецкого района проходят праздничные мероприятия, приуроченные к 82-й годовщине выхода Красной армии на государственную границу.
Торжества организованы у памятного воинского знака, где собрались местные жители, представители власти и общественных организаций. #pobeda
Sputnik Молдова ¦ Telegram ¦Сайт ¦ VK ¦OK ¦Rutube ¦ Дзен ¦MAX
В северной столице Молдовы Бельцах в эти минуты проходят торжества, посвященные 82-й годовщине освобождения города от фашистской оккупации. #Pobeda
Sputnik Молдова ¦ Telegram ¦ Сайт ¦ VK ¦ OK ¦ Rutube ¦ Дзен ¦ MAX
В Дондюшанах отметили 82-ю годовщину освобождения от фашистской оккупации.
У памятника героям Великой Отечественной войны прошла торжественная церемония возложения цветов к Вечному огню и митинг.
"В рамках торжественных мероприятий была представлена выставка фотографий и документов "Из безвестности в бессмертие", посвящённая 15-летию возрождения Поискового движения Молдовы. Экспозиция рассказывает о судьбах солдат и офицеров Красной армии, погибших за освобождение Молдовы от фашизма, чьи имена удалось восстановить в ходе полевых и архивных поисковых работ, — отметил автор telegram-канала @soldat_pobedi Алексей Петрович. #pobeda
Sputnik Молдова ¦ Telegram ¦ Сайт ¦ VK ¦ OK ¦ Rutube ¦ Дзен ¦ MAX