Можно ли в 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
📢 Putin sends best wishes to Chechen fighters in special military operation. Supports their families too. War heroes fighting courageously at the front lines. 🤝 Meeting with Kadyrov fuels speculation. 🎥 Video captures Putin-Kadyrov encounter. Stay tuned for details. 🤫 Kremlin silent on Kadyrov's son's violent video. 💥 Controversy surrounds Chechnya's leader. Opposition claims Kadyrov in a coma. First post from Kadyrov's son after Quran incident. #Russia#Chechnya#WarHeroes
https://www.gazeta.ru/army/news/2023/09/28/21383773.shtml
Subscribe to @BadVolfNews
State of Emergency Declared in Chechnya Due to Heavy Rainfall
Chechen leader Ramzan Kadyrov has declared a state of emergency following severe rains causing flooding and disrupting daily life. Authorities are mobilizing resources to stabilize the situation and assist affected residents. This measure aims to speed up emergency response and provide necessary support during the crisis. The situation remains closely monitored.
#Chechnya#Emergency#Weather#RamzanKadyrov#Russia
The main news of Russia and the world ishere.
State of Emergency Declared in Dagestan and Chechnya Due to Floods
A federal-level State of Emergency has been declared in Dagestan and Chechnya following severe flooding. Local authorities and emergency services are working to address the disaster’s aftermath and assist those affected. The measure aims to coordinate efforts and mobilize resources for regional recovery.
“The main priority is ensuring public safety and minimizing damage,” the Emergency Ministry stated.
#Russia#Emergency#Dagestan#Chechnya#Flood
The main news of Russia and the world ishere.
Heavy Rain Disrupts Power Supply in Ingushetia and Chechnya
Severe downpours have caused power and water outages in Ingushetia cities—Karabulak, Nazran, and Sunzha. Specialists are working to fix faults in electrical grids and pumping stations. Similar disruptions affect some Chechen districts due to rain and wind.
“Several areas in Karabulak are experiencing electricity interruptions caused by heavy rainfall,” local authorities reported.
#Ingushetia#Chechnya#Weather#PowerOutage#Emergencies
The main news of Russia and the world ishere.
Ассаламу Алайкум, дорогие друзья!
Республиканское общественное движение «Турпалхой» искренне поздравляет Главу ЧР, Героя России Рамзана Ахматовича Кадырова с присвоением ему звания «Герой Чеченской Республики»!
Рамзан Ахматович подтверждает свой героизм на протяжении многих лет у руководства региона. Благодаря его стратегически точным и важным решениям чеченский народ обрел мир и порядок на своей земле. Рамзан Ахматович сумел уничтожить до последнего представителей международного терроризма, которые десятки лет сеяли хаос и разрушения на чеченской земле. В связи с этим, звание «Герой Чеченской Республики» нашло своего заслуженного и достойного обладателя.
Желаем Вам, Рамзан Ахматович, терпения, сил и успехов в Вашем нелегком деле! Вы - настоящий ТУРПАЛХО и весь чеченский народ Вами гордится!
#AkhmadHadji
#Warrior
#Turpalkhoy
#Chechnya
#Grozny
#Heroes
#Кадыров
#АхматХаджи
#Воин
#Турпалхой
#Чечня
#Грозный
#Герои
Наши бойцы всего за пару недель заставили в страхе зашевелиться весь мир. Враги наши делают все, чтобы ослабить наших бойцов… откуда им, дуракам, знать, что мужество и отвага невозможно ослабить и что наши бойцы не остановятся ни перед чем, чтобы выполнить приказ!
#100ЛЕТЧЕЧЕНСКОЙГОСУДАРСТВЕННОСТИ
#AkhmadHadji
#Warrior
#Turpalkhoy
#Chechnya
#Grozny
#Heroes
#Кадыров
#АхматХаджи
#Воин
#Турпалхой
#Чечня
#Грозный
#Герои
Президент России Владимир Владимирович Путин - тот человек, который остановил войну в ЧР, принес мир и каждый день заботился о том, чтобы этот мир сохранить. Человек, который своими словами и делами возвысил имидж нашего региона и религии. И идти за таким человеком для нас огромная гордость!
#100ЛЕТЧЕЧЕНСКОЙГОСУДАРСТВЕННОСТИ
#AkhmadHadji
#Warrior
#Turpalkhoy
#Chechnya
#Grozny
#Heroes
#Кадыров
#АхматХаджи
#Воин
#Турпалхой
#Чечня
#Грозный
#Герои
За правое дело хочется смиренно жить или же достойно умереть! Ты знаешь, что при любом исходе, ты был прав. Посему ты можешь себе позволить пошутить, посмеяться самому, а если требуется не моргнув глазом рискнуть всем.
#100ЛЕТЧЕЧЕНСКОЙГОСУДАРСТВЕННОСТИ
#AkhmadHadji
#Warrior
#Turpalkhoy
#Chechnya
#Grozny
#Heroes
#Кадыров
#АхматХаджи
#Воин
#Турпалхой
#Чечня
#Грозный
#Герои
Более двух десятков лет Глава ЧР, Герой России Рамзан Ахматович Кадыров и словом и делом доказал, что народ и его благополучие для неё в приоритете над всем остальным! Он столько лет так самоотверженно вел за собой народ, что теперь, любой чеченец, встанет за него горой и без сомнения не пожалеет своей жизни за его безопасность!
#100ЛЕТЧЕЧЕНСКОЙГОСУДАРСТВЕННОСТИ
#AkhmadHadji
#Warrior
#Turpalkhoy
#Chechnya
#Grozny
#Heroes
#Кадыров
#АхматХаджи
#Воин
#Турпалхой
#Чечня
#Грозный
#Герои
Наши опытные бойцы всегда пребывают в особом расположении духа перед каждым сражением. Когда враг думает как спасти свою жизнь, наши бойцы думают как истребить врага ни капли не переживая за свою. В этом мы отличаемся от бандеровщины и подобной швали.
#100ЛЕТЧЕЧЕНСКОЙГОСУДАРСТВЕННОСТИ
#AkhmadHadji
#Warrior
#Turpalkhoy
#Chechnya
#Grozny
#Heroes
#Кадыров
#АхматХаджи
#Воин
#Турпалхой
#Чечня
#Грозный
#Герои
Это нужно какой подлой и низкой падалью быть, чтобы звонить родственникам солдат и сообщать об их гибели, зная, что они в здравии, но не могут сами выйти на связь. Во все времена, люди даже за большие деньги отказывались сообщать такое родственникам когда это на самом деле было правдой. До чего же вы низко пали! Конечно, вы бы хотели чтобы наши бойцы ушли в праведный мир, но убегая с поля боя вы ничего не добьётесь! У вас нет мужества открыто вести вражду, так вы опустились до уровня телефонных пранкеров! Вы не воины, вы просто пранкеры!
#100ЛЕТЧЕЧЕНСКОЙГОСУДАРСТВЕННОСТИ
#AkhmadHadji
#Warrior
#Turpalkhoy
#Chechnya
#Grozny
#Heroes
#Кадыров
#АхматХаджи
#Воин
#Турпалхой
#Чечня
#Грозный
#Герои