Можно ли в 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
#elon
Har xil turdagi rasta (vitrina) muzlatkichlar sotiladi
Yetkazib berish xizmati mavjud
98 700 60 80
90 729 01 93
✅Telegram
📱Instagram
✅Facebook
✅Youtube
🎁Dilnomalar
🎥📱ITV
🎥📺TVCOM
🎥✅Telegram
🎥🎬Cinerama
#Elon
Birozdan so'ng, soat 11:00da Oliy Majlis Qonunchilik palatasining navbatdagi majlisi boshlanadi. Majlisni Qonunchilik palatasining rasmiy veb-saytiorqali to‘g‘ridan-to‘g‘ri kuzatibborishingiz mumkin.
✅Telegram|✅Facebook | 🌐Instagram |🌐 Web site | 📹You Tube
#Elon
Birozdan so'ng, soat 11:00da Oliy Majlis Qonunchilik palatasining navbatdagi majlisi boshlanadi. Majlisni Qonunchilik palatasining rasmiy veb-saytiorqali to‘g‘ridan-to‘g‘ri kuzatibborishingiz mumkin.
✅Telegram|
✅Facebook |
🌐Instagram |
🌐 Web site |
📹You Tube
#Elon
Birozdan so'ng, soat 11:00da Oliy Majlis Qonunchilik palatasining navbatdagi majlisi boshlanadi. Majlisni Qonunchilik palatasining rasmiy veb-saytiorqali to‘g‘ridan-to‘g‘ri kuzatibborishingiz mumkin.
✅Telegram|
✅Facebook |
🌐Instagram |
🌐 Web site |
📹You Tube
#Elon
Birozdan so'ng, soat 11:00da Oliy Majlis Qonunchilik palatasining navbatdagi majlisi boshlanadi. Majlisni Qonunchilik palatasining rasmiy veb-saytiorqali to‘g‘ridan-to‘g‘ri kuzatibborishingiz mumkin.
✅Telegram|
✅Facebook |
🌐Instagram |
🌐 Web site |
📹You Tube
#Elon
Birozdan so'ng, soat 11:00 da Oliy Majlis Qonunchilik palatasining navbatdagi majlisi boshlanadi. Majlis Qonunchilik palatasining rasmiy veb-sayti hamdayoutubedagi kanali orqali to‘g‘ridan-to‘g‘ri kuzatib borishingiz mumkin.
✅Telegram|
✅Facebook |
🌐Instagram |
🌐 Web site |
📹You Tube
#Elon
Birozdan so'ng, soat 11:00da Oliy Majlis Qonunchilik palatasining navbatdagi majlisi boshlanadi. Majlisni Qonunchilik palatasining rasmiy veb-saytiorqali to‘g‘ridan-to‘g‘ri kuzatibborishingiz mumkin.
✅Telegram|✅Facebook | 🌐Instagram |🌐 Web site | 📹You Tube
#elon
Hurmatli soliq toʻlovchilar!
“Sharq Telekom” internet provayderi servislarida nosozliklar kuzatilayotganligi sababli soliq organlarining ayrim (ijara.soliq.uz, my3.soliq.uz, tekshiruv.soliq.uz, e-imzo.soliq.uz) tizimlari faoliyatida vaqtinchalik uzilishlar bo‘lishi mumkin.
Keltirilgan noqulayliklar uchun oldindan uzr soʻraymiz.
Тelegram|Facebook|Youtube|Instagram|X|Threads
❗️#ELON
- "SHERDOR MEDIA" ga Mobilografiyadan xabari bor Kantentlar, umuman olganda vedio ishlari bo'yicha bo'ladi va trenirofkalarda ham qatnashishi mumkin, o'yini yaxshi bo'lsa o'yinlarda ham tushadi...!
Kim qiziqsa Managerga yozishingiz mumkin, kamandaga qo'shilishni kichik bir yo'li bu, Batafsil yana gaplashamiz..!
👨💻 Manager: @sherdor_media
📍 Official: @fc_sherdor_media
😎
😎
😎
😎
😎
😎
😎
#elon
🌟Bayramda ham “Mittivoy” siz bilan!🌟
Aziz ota-onalar! Ramazon hayiti va Navro‘z bayramlari munosabati bilan e’lon qilingan dam olish kunlarida biz dam olmaymiz! 🤩
Farzandlaringizga bayram shodligini ulashishingiz uchun 20-21-mart kunlari ham barcha filiallarimiz odatdagidek xizmatingizda bo‘ladi
📌Kitoblarga -50% chegirma kerakmi?
📍Manzilimiz📍Lokatsiya
🕘 9:00 dan 23:00 gacha
☎️ +998905116466
💵1% KESHBEK
📱Telegram📱Instagram📱YouTube📑Ishga kirish
#Elon
Chiqindilarni boshqarish va sirkulyar iqtisodiyotni rivojlantirish agentligining “1205” qisqa ishonch telefoni hozirda vaqtinchalik texnik sabablarga ko‘ra ishlamayotgani haqida agentlikning rasmiy sahifasida ma’lum qilindi.
Bildirilishicha, ushbu holat agentlikning yangi manzilga ko‘chishi bilan bog‘liq bo‘lib, ayni paytda aloqa tizimlarini qayta sozlash hamda zarur texnik ishlar amalga oshirilmoqda.
Mutaxassislar tomonidan texnik jarayonlar yakunlangach, call-center faoliyati tez orada to‘liq tiklanishi va bu haqda jamoatchilikka rasmiy ravishda qo‘shimcha ma’lumot berilishi ta’kidlandi.
Ma’lumot uchun, “1205” qisqa raqami respublika bo‘ylab fuqarolardan chiqindilar bilan bog‘liq murojaatlarni qabul qilish, mavjud muammolarni tezkor hal etish hamda ularni tegishli xizmatlarga yo‘naltirish maqsadida faoliyat yuritib kelmoqda.
_____
На официальной странице Агентства по управлению отходами и развитию циркулярной экономики сообщается, что короткий номер доверия «1205» в настоящее время временно не функционирует по техническим причинам.
Отмечается, что данная ситуация связана с переездом агентства на новый адрес. В настоящее время проводятся работы по перенастройке систем связи и выполнению необходимых технических процессов.
Подчеркивается, что после завершения всех технических процедур деятельность call-центра будет в ближайшее время полностью восстановлена, а общественность будет дополнительно официально проинформирована об этом.
Напомним, что короткий номер «1205» функционирует по всей республике для приема обращений граждан, связанных с отходами, оперативного решения возникающих проблем и их направления в соответствующие службы.
Kanalimizga obuna bo'ling: @wasteuzgroup
📷Instagram | 🕊Telegram | 📱Facebook |Web-Sayt
#Elon
⚡️3-dekabr Furqat filialimizda bo’lib o’tuvchi, IELTS GRAND Mock imtihoniga talabgorlar hali ham ro’yxatdan o’tayotganligi sababli 10-dekabr sanasiga ko’chirildi.
Agarda siz ham ro’yxatdan o’tmagan bo’lsangiz hoziroq ro’yxatdan o’ting👇🏻
📨Ro’yxatdan o’tish uchun
☎️ 55-500-90-10