Можно ли в 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
#comment
Kichik bir konkurs Registon yoki Cambridge o’quv markazidan 100% lik chegirma asosida sertifikat yutib olishni hohlaysizmi?
Tez orada talaba va abituriyentlar uchun zo’r yangilik bo’ladi!
@redfoxuz / #comment / 31 avgust 2021
Muqaddas Karimovaning RedFox akademiyasidagi grafik dazayn BOOTCAMP haqida fikri:
" RedFox akademiyasiga kelishdan avval Tomaris Tech loyihasi asosida tashkil etilgan 3 oylik bepul online kursida Grafik dizayn yoʻnalishda oʻqidim.U yerda faqatgina dastur bilan ishlashni oʻrgandim. So'ng RedFox akademiyasiga shogird olishayotganini internet orqali ko'rib qoldim va berilgan raqamlarga murojaat qildim va suhbatdan oʻtib RedFox akademiyasiga qabul qilindim. RedFoxda nafaqat dasturlar bilan ishlashni balki ustozlar bilan real proyektlar ustida ishlashni oʻrgandim.Grafik dizayn aslida qanday soha ekinligi haqida toʻliq maʼlumotga ega bo'ldim."
Suhbatdan o'ting:
📩@redfoxsuhbat
@redfoxuz / #comment
Islom Qurbonovning RedFox Akademiyasidagi SMM dizayn BOOTCAMP bo'yicha fikri:
"Oliygohda o'qishga qiziqishim bo'lmagan, shu sababdan RedFoxga o'qishga keldim. Bir oy oldin grafik dizayn sohasi bo'yicha tushuncham yo'q edi. Ustozlarimning bergan feedbacklaridan ko'p narsani o'rgandim. RedFox oddiygina akademiya emas RedFox ustozlar va shogirdlar oilasi."
📆 9 Iyun 2021
@redfoxuz / #comment
Usmonov Og'abekning RedFox Akademiyasidagi SMM dizayn BOOTCAMP bo'yicha fikri:
"RedFoxdagi real muhit, real proyektlar va raqobatni his qilib ishlash sizni yanada o'stiradi!"
📆 9 Iyun 2021
@redfoxuz / #comment
Yusupov Muhammadsodiqning RedFox Akademiyasidagi SMM dizayn BOOTCAMP bo'yicha fikri:
"O'zim ingliz tili yo'nalishida o'qiyman. Universtitet kutganimgidek emasligini keyin tushundim. Ikki oy oldin dizayn sohasi haqida tushunchaga ega emasdim. Bu yerdagi birinchi kunimdayoq Real proyektlar bilan ishlashni boshladik. Ustozlarning saboqlari bilan bir qancha loyihalarda qatnashdim. Bunda albatta ustozlarimizning hissasi katta. RedFox bu shunchaki dizayn studiosi emas, bu ustoz shogirdlar oilasi"
📆 9 Aprel 2021
@redfoxuz / #comment
😎 Sunnatbek Boboqulovning RedFox Akademiyasidagi SMM dizayn BOOTCAMP bo'yicha fikri:
"Dizayn sohasini o'rganish uchun ko'p joylarga borib ko'rgan edim, lekin dizayn erkinligini, muhitini faqat o'zingiz sevgan kasb bilan shug'ullanishni shu yerdan topdim!"
📆 6 Aprel 2021
#review#comment@akshali18
Wish Every day I see a new sunrise. My life, my vision, my delighters, my happiness, my experience is with me now and I am on no account going to misplace it. I have faced many teething troubles, many snake oils people but luckily, I am out of all the dilemmas in my life and that’s impressive. Now the sparkling day has come when I have become advanced to a greater extent, a pace more for advancing my future. I will show consideration for one and all, share cheerfulness with all and sundry and lend a hand to whole world. But without divinity it is impossible, and I am 101% sure you are with me god 😊. My life is mine each and every instant what I have suffered is adjusted by me to get out of that situation...
- the silent soul
🇧🇾#комментарий начальника Генерального штаба Вооруженных Сил — первого заместителя Министра обороны генерал-майора Павла Муравейкоо внезапной проверке готовности соединений и воинских частей Вооруженных Сил к выполнению задач по предназначению:
💬«Вооруженные Силы Республики Беларусь продолжают выполнять комплекс мероприятий по совершенствованию готовности сил и средств к выполнению задач по предназначению. В рамках данной деятельности сегодня с 9 часов утра начата внезапная проверка боевой готовности отдельных соединений воинских частей.
Проверка носит комплексный характер и предусматривает задействие разнородных сил. В частности, подразделения и воинские части сил специальных операций получили задачу выдвинуться во вновь назначенные районы, организовать их инженерное оборудование, создание системы заграждений. В последующем быть в готовности действовать по поиску, уничтожению и блокированию диверсионно-разведывательных групп условного противника, несению службы на блокпостах, а также оперативному реагированию и выходу на назначенные рубежи.
Подразделения зенитно-ракетных войск осуществляют выдвижение в новые позиционные районы и с их занятием завершат создание системы зенитно-ракетного прикрытия важных объектов на угрожаемых направлениях.
Одновременно с действиями сил специальных операций активно действуют подразделения ракетных войск и артиллерии, оснащенные комплексами «Полонез» и реактивными системами залпового огня БМ-21 «Град». Данные подразделения также под прикрытием сил специальных операций скрытно занимают назначенные районы и должны заступить на боевое дежурство по назначенным объектам.
В рамках всей проверки комплексно будет действовать авиация, которая выполнит задачи по доставке и высадке штурмовых групп на угрожаемые направления, поддержке сухопутной группировки при действиях на земле, а также несению и обеспечению истребительного авиационного прикрытия в важных объектах в рамках системы противовоздушной обороны.
Активно будут применяться беспилотные летательные аппараты, силы и средства радиоэлектронной борьбы, а также планируется отработать приемы действия сухопутных группировок в лесисто-болотистой местности.
Вся проверка спланирована и будет проводиться на территории Гомельской и Брестской областей. Мы надеемся, что по итогам данного мероприятия получим объективную оценку готовности наших воинских частей и подразделений выполнять задачи в условиях быстроменяющейся обстановки и обеспечивать безопасность нашей страны».
——————————
#comment by Chief of the General Staff of the Armed Forces — First Deputy Minister of Defence Major General Pavel Muraveiko:
«A snap combat readiness check of formations and military units of the Armed Forces began today.
The inspection will assess the ability of military units and subunits to occupy the designated areas in an orderly and timely manner, to equip the specified areas with engineering equipment, as well as to organise security and defence.
The troops will then have to carry out combat training tasks to search for and eliminate sabotage-reconnaissance groups of the mock enemy, conduct ambush actions, occupy the designated defence lines, as well as to be on duty at checkpoints».
Фото: Владимир Блинов, «Ваяр»
Сайт | Instagram | Х | Ok | Vk | Fb
@redfoxuz / #designer / #comment
😎 Dizayner Farruhbek Abdullayevdan RedFox uchun comment.
"RedFoxga borganimdan buyon har kunimni yozishga odatlanganman. SIzga rahmat notion bilan tanishtirganingiz uchun endi u bilan yashayotgan har kunim, har haftam, har oyim, har yilim va albatta butun hayotim rejalashtirilgan."
📅 13 sentabr 2020 yil