Можно ли в 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
Ar-Riyodda ISSAning navbatdagi Bosh Assambleyasi oʻtkazildi
Bugun Islom birdamligi sport assotsiatsiyasining (ISSA) 14-Bosh Assambleyasi boʻlib oʻtdi. Tashkilot kelajagiga oid qator muhim masalalar koʻrib chiqilgan tadbirda Oʻzbekiston nomidan Sport vaziri Adham Ikramov hamda MOQ Xalqaro aloqalar va protokol departamenti direktori Kamoliddin Ergashev ishtirok etdi.
—
В Эр-Рияде состоялась очередная Генеральная Ассамблея ISSA
Сегодня прошла 14-я Генеральная Ассамблея Спортивной ассоциации Исламской солидарности (ISSA). На мероприятии, где были рассмотрены важные вопросы, касающиеся будущего организации, Узбекистан представляли министр Спорта Адхам Икрамов и директор департамента Международных отношений и протокола НОК Камолиддин Эргашев.
#Riyod2025#BoshAssambleya
👉@OlympicUz
olympic.uz I YouTube I Instagram I
FIA Bosh Assambleyasi doirasidagi tadbirlarga rasman start berildi
“Oʻzbekiston” xalqaro forumlar saroyida FIA Bosh Assambleya haftaligining tantanali ochilish marosimi boʻlib oʻtdi. FIA Prezidenti Muhammad Ben Sulayem, Sport vazirligi va MOQ rahbariyati, shuningdek, xalqaro tashkilot tarkibiga kiruvchi barcha yoʻnalishlarning mutasaddilari ishtirok etishdi.
Tadbirda mamlakatimiz nomidan soʻz olgan Sport vaziri Adham Ikramov barcha mehmonlarni qutlab, yurtimizda sport sohasida olib borilayotgan islohotlar haqida toʻxtaldi. Shuningdek, janob Ben Sulayem Markaziy Osiyo mintaqasida ilk bor oʻtkazilayotgan avtosport olamidagi mazkur tadbirning ahamiyati haqida gapirdi va yil davomida turli yoʻnalishlarda faollik koʻrsatgan jamoalar hamda tashkilotlarni taqdirladi.
—
Официально дан старт мероприятиям в рамках Генеральной ассамблеи FIA
Во Дворце международных форумов «Узбекистан» состоялось торжественное открытие недели Генеральной Ассамблеи FIA. В церемонии приняли участие Президент FIA Мохаммед Бен Сулайем, руководство Министерства спорта и Национального Олимпийского комитета, а также представители различных направлений, входящие в структуру международной федерации.
На мероприятии Министр спорта Адхам Икрамов, выступая от имени нашей страны, поздравил всех гостей и отметил реформы, которые проводятся в Узбекистане в сфере спорта. В свою очередь, господин Бен Сулайем подчеркнул значимость данного события в мире автоспорта, которое впервые проходит в регионе Центральной Азии, и наградил команды и организации, проявившие активность в различных направлениях в течение года.
#FIA#BoshAssambleya
👉@OlympicUz
olympic.uz I YouTube I Instagram I
Osiyo Olimpiya kengashining tarixiy Bosh Assambleyasidan lahzalar
—
Моменты с исторической Генеральной Ассамблеи Олимпийского совета Азии
—
Footage from the historic General Assembly of the Olympic Council of Asia
#OOK#BoshAssambleya
👉@OlympicUz
olympic.uz I YouTube I Instagram I
Shayx Javʼan bin Hamad Ol Soniy Toshkentga tashrif buyurdi
Poytaxtimizda oʻtkaziladigan Osiyo Olimpiya kengashi 46-Bosh Assambleyasining faxriy mehmonlaridan biri – Milliy Olimpiya qoʻmitalari assotsiatsiyasi (ANOC) raisining birinchi oʻrinbosari, Qatar Olimpiya qoʻmitasi prezidenti Shayx Javʼan bin Hamad Ol Soniy Toshkentga yetib keldi.
Martabali mehmonni Islom Karimov nomidagi Toshkent xalqaro aeroportida Sport vazirligi hamda Milliy Olimpiya qoʻmitasi rahbariyati kutib oldi.
Maʼlumot uchun, Shayx Javʼan bin Hamad Ol Soniy Osiyo Olimpiya kengashining 46-Bosh Assambleyasi doirasida tashkilot rahbarligi uchun oʻtkaziladigan saylovda yagona nomzod sifatida koʻrsatilgan.
—
Шейх Джоаан бин Хамад Аль Тани прибыл в Ташкент
В столицу с официальным визитом прибыл первый заместитель председателя Ассоциации Национальных Олимпийских комитетов (ANOC), президент Олимпийского комитета Катара шейх Джоаан бин Хамад Аль Тани, который является одним из почётных гостей 46-й Генеральной Ассамблеи Олимпийского совета Азии.
Господина Аль Тани в международном аэропорту имени Ислама Каримова встретило руководство Министерства спорта и Национального Олимпийского комитета.
Для сведения, в рамках 46-й Генеральной Ассамблеи ОСА шейх Джоаан бин Хамад Аль Тани выдвинут единственным кандидатом на выборы руководителя организации.
#OOK#BoshAssambleya
👉@OlympicUz
olympic.uz I YouTube I Instagram I
26-yanvar kuni poytaxtimiz Toshkentda Osiyo sporti uchun yilning eng muhim voqealaridan biri – Osiyo Olimpiya kengashining 46-Bosh Assambleyasi boʻlib oʻtadi. Qitʼamizning 45 mamlakatidan Milliy Olimpiya qoʻmitalari va xalqaro sport ekspertlari ishtirokida oʻtadigan ushbu nufuzli tadbir Yangi Oʻzbekistonning yirik xalqaro anjumanlarni yuksak saviyada tashkil etish va oʻtkazish salohiyatini yana bir bor namoyon etadi.
—
26 января в нашей столице Ташкенте состоится одно из самых значимых событий года для Азиатского спорта — 46-я Генеральная Ассамблея Олимпийского совета Азии. В этом престижном форуме примут участие представители Национальных Олимпийских комитетов и международные спортивные эксперты из 45 стран континента. Мероприятие в очередной раз продемонстрирует высокий потенциал Нового Узбекистана в организации и проведении крупных международных мероприятий на самом высоком уровне.
#OOK#BoshAssambleya
👉@OlympicUz
olympic.uz I YouTube I Instagram I
OOK 46-Bosh Assambleyasiga tayyorgarlik masalalari muhokama qilindi
Joriy yilning 26-yanvar kuni Toshkent shahri Osiyo Olimpiya kengashining (OOK) 46-Bosh Assambleyasiga mezbonlik qiladi. Ayni paytda mazkur nufuzli tadbirni yuqori saviyada oʻtkazish maqsadida keng koʻlamli tayyorgarlik ishlari amalga oshirilmoqda. Bugun Sport vazirligida ushbu jarayonlarga bagʻishlangan yigʻilish boʻlib oʻtdi.
—
Ташкент готов принять 46-Генеральную Ассамблею ОСА
26 января текущего года в Ташкенте пройдёт 46-Генеральная Ассамблея Олимпийского совета Азии (ОСА). В настоящее время ведётся масштабная подготовка к проведению этого престижного мероприятия на высоком уровне. Сегодня в Министерстве спорта состоялось совещание, посвящённое организационным вопросам.
#OOK#BoshAssambleya
👉@OlympicUz
olympic.uz I YouTube I Instagram I
Xalqaro tashkilotlar rahbariyatining poytaxtimizga kelishi davom etadi
Toshkentga Butunjahon antidoping agentligi (WADA) prezidenti Vitold Banka hamda Xalqaro Olimpiya qoʻmitasining Xalqaro aloqalar, Olimpiya birdamligi va Olympism365 loyihasi boʻyicha direktori Jeyms Makleod tashrif buyurdi. Martabali mehmonlarni Sport vaziri Adham Ikramov va MOQ mas’ullari kutib oldi.
Maʼlumot uchun, 26-yanvar kuni Osiyo Olimpiya kengashining 46-Bosh Assambleyasi, 26–27-yanvar kunlari esa antidoping sohasiga oid xalqaro forumlar oʻtkazilishi rejalashtirilgan.
—
Ташкент продолжает принимать руководителей международных организаций
В столицу прибыл президент Всемирного антидопингового агентства (WADA) Витольд Банька, а также директор Международного Олимпийского комитета по международным связям, Олимпийской солидарности и проекту Olympism365 Джеймс Маклеод. Высокопочётных гостей встретили Министр спорта Адхам Икрамов и представители НОК.
Для сведения, 26 января состоится 46-я Генеральная Ассамблея Олимпийского совета Азии, а 26–27 января запланировано проведение международных форумов, посвящённых вопросам антидопинга.
#BoshAssambleya#WADA
👉@OlympicUz
olympic.uz I YouTube I Instagram I
Toshkentda Osiyo Olimpiya kengashining 46-Bosh Assambleyasi bo‘lib o‘tdi
Poytaxtimiz Toshkent shahrida Osiyo Olimpiya kengashining 46-Bosh Assambleyasi bo‘lib o‘tdi. Nufuzli anjumanda Osiyo Olimpiya kengashi va unga a’zo Milliy Olimpiya qo‘mitalari vakillari, Xalqaro Olimpiya qo‘mitasi hamda yetakchi sport tashkilotlarining rahbarlari, shuningdek, O‘zbekiston Respublikasi Sport vazirligi, Milliy Olimpiya va Paralimpiya qo‘mitalari rahbariyati ishtirok etdi.
—
В Ташкенте состоялась 46-я Генеральная Ассамблея Олимпийского совета Азии
В Ташкенте прошла 46-я Генеральная Ассамблея Олимпийского совета Азии. В работе престижного форума приняли участие представители Олимпийского совета Азии и входящих в его состав Национальных Олимпийских комитетов, главы Международного Олимпийского комитета и ведущих спортивных организаций, а также руководство Министерства спорта Республики Узбекистан, Национальных Олимпийского и Паралимпийского комитетов.
#OOK#BoshAssambleya#Toshkent2029
👉@OlympicUz
olympic.uz I YouTube I Instagram I