Можно ли в 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
#Ta’ziya
“Hunarmand” uyushmasi Sirdaryo viloyati boshqarma boshlig‘i Muzaffar Rahmatovning nevarasi Xadichaxonning bevaqt vafoti munosabati bilan “Hunarmand” uyushmasi rahbariyati va jamoasi nomidan chuqur ta’ziya izhor etamiz.
Marhumaning yaqinlariga sabr-toqat, oila a’zolariga Allohdan matonat tilaymiz.
#Ta’ziya
Respublika “Hunarmand” uyushmasi rahbariyati va jamoasi, bo‘lim boshlig‘i Davron Sobirovning qaynonalari Saidahon onaning vafoti munosabati bilan chuqur ta’ziya izhor qiladi. Ya’qinlariga sabr-toqat tilaymiz.
#TA'ZIYA
Rеspublika Hunarmand uyushmasi rahbariyati va jamoasi, Uyushmaning Marg‘ilon shahar bo‘limi a’zosi, usta hunarmand, misgar Dadajonov A’zamxonning padari buzruqvori kandakor usta, «Mehnat shuhrati» ordеni sohibi Dadajonov Usmonxon xoji 83 yoshda olamdan o‘tganligi munosabati bilan chuqur ta’ziya bildiradi.
Marhumning oila a’zolari, farzandlari va yaqinlariga sabr va quvvat tilaymiz.
Ohiratlari obod bo‘lsin.
#Ta’ziya
Toshkent viloyati Yangiyo‘l shahrida faoliyat olib borayotgan Madraimov Behzod Yuldashevichning rafiqasi — Madraimova Zuhra Ahmadjanovnaning vafot etgani munosabati bilan “Hunarmand“ uyushmasi rahbariyati va jamoasi nomidan chuqur ta’ziya izhor etamiz.
Marhumaning oila a’zolari va yaqinlariga og‘ir judolik munosabati bilan sabr-toqat tilaymiz.
#TA’ZIYA
Bugun “Hunarmand” uyushmasi Farg‘ona viloyati Rishton tumani bo‘limi a’zosi, usta hunarmand kulol Toqirjon Haydarovning onalari — Haydarova Hursanoy hoji ona 84 yoshda vafot etdilar.
Shu munosabat bilan “Hunarmand “uyushmasi rahbariyati va jamoasi nomidan marhumaning yaqinlariga chuqur ta’ziya izhor etamiz.
Marhumaning janoza marosimi soat 11:00 da bo‘lib o‘tadi.
Manzil: Rishton tumani, Jalaer qishlog‘i, “Saroy” MFY.
Oxiratlari obod bo‘lsin, yaqinlariga sabr-toqat bersin.
#Ta’ziya
"Hunarmand" uyushmasi rahbariyati va jamoasi Furqat Qo‘chqorovich Ne’matov vafoti munosabati bilan uning oila a’zolariga chuqur hamdardlik va ta’ziya bildiradi.
Furqat Qo‘chqorovich 2022–2024 yillarda Jizzax viloyati boshqarma faoliyatida o‘z mehnatsevarligi, faolligi va samimiyligi bilan hamkasblari xotirasida abadiy qoladi.
#TA’ZIYA
Xalq amaliy san’ati ustasi, kashtado‘z hunarmand, ustoz Qo‘chqorova Muhabbatning vafotlari munosabati bilan marhumaning barcha oila a’zolariga, shogirdlariga va yaqinlariga Respublika “Hunarmand” uyushmasi rahbariyati va jamoasi nomidan chuqur va samimiy ta’ziya izhor etamiz.
Alloh taolo marhumaning farzandlari va oila a’zolariga chiroyli sabr ato etsin, marhum hunarmandimizning oxiratlari obod bo‘lsin.
#Ta’zim
💎Ikkinchi jahon urushi qatnashchisi, toshloqlik 103 yoshli Odiljon ota Zokirov tilidan bir daqiqa bo‘lsin shukronalik tushmaydi.
🔻Ocharchilik, urush dahshati va o‘lim xavfidan omon qolgan bu tabarruk zotning har bir so‘zi insonni faqat yaxshilikka yetaklaydi, hayotning har bir lahzasiga shukr qilib yashashni o‘rgatadi.
🔸Hali-hanuz yuragida Vatanga muhabbat o‘ti yonib turgan toshloqlik Odiljon otadan ibrat oling va bu insonlarning buyuk jasorati oldida bosh egaylik.
📍Toshloq tumanidagi maktab o‘quvchilari tez-tez ushbu mo‘tabar inson xonadonida bo‘lib, hayotiy hikmatlaridan bahramand bo‘lishni kanda qilishmaydi.
Farg‘ona viloyati Maktabgacha va maktab ta’limi boshqarmasi Axborot xizmati.
#TA’ZIYA
AKADEMIK ABDULLA UBAYDULLAYEV OLAMDAN O‘TDI
O‘zbek ilm-fani og’ir judolikka uchradi.
Taniqli pulmonolog olim, Oʻzbekiston Fanlar akademiyasi akademigi, Oʻzbekistonda xizmat koʻrsatgan tibbiyot xodimi Ubaydullayev Abdulla Muharramovich 91 yoshida olamdan o‘tdi.
Atoqli olim, mehribon ustoz, kamtarin inson Abdulla Ubaydullayevning xotirasi qalblarimizda hamisha saqlanib qoladi.
Marhumning oila a'zolari va yaqinlariga O'zbekiston Respublikasi Fanlar akademiyasi nomidan hamdardlik bildiramiz.
СКОНЧАЛСЯ АКАДЕМИК АБДУЛЛА УБАЙДУЛЛАЕВ
Наука Узбекистана понесла тяжелую утрату.
В возрасте 91 лет скончался Абдулла Убайдуллаев Мухаррамович, ведущий ученый в области пульмонологии, заслуженный врач, академик Академии наук Республики Узбекистана.
Память об Абдулле Убайдуллаеве, выдающимся ученом, заботливом наставнике, искреннем и скромном человеке сохранится в наших сердцах.
Академия наук Республики Узбекистан выражает глубокие соболезнования членам семьи, родным и близким покойного.
😎Telegram |🌐Websayt
😎Facebook |😎YouTube|😎Instagram