Можно ли в 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
#expo
👍 IT Park Uzbekistan delegatsiyasi “Call & Contact Centre Expo 2024” koʻrgazmasida ishtirok etdi
IT Park Uzbekistan delegatsiyasi Londonda oʻtkazilgan eng yirik xalqaro koʻrgazma “Call & Contact Centre Expo 2024”da qatnashib, Oʻzbekistonda biznes yuritish va autsorsing loyihalarini rivojlantirish boʻyicha keng imkoniyatlarni taqdim etdi.
Ko'rgazma doirasida axborot texnologiyalari sohasidagi kompaniyalar uchun hamkorlik istiqbollari, shuningdek, Oʻzbekiston bozoriga kirish va mamlakatda innovatsion yechimlarni amalga oshirishdan manfaatdor boʻlgan xorijiy investorlar uchun imkoniyatlar namoyish etildi.
🌐Batafsil veb-saytimizda
__
👍IT Park Uzbekistan Delegation Participates in Call & Contact Centre Expo 2024
The delegation of IT Park Uzbekistan took part in the prestigious international exhibition Call & Contact Centre Expo 2024, held in London, where it showcased a comprehensive range of business opportunities and outsourcing project development prospects in Uzbekistan.
During the exposition, the delegation highlighted collaboration opportunities for IT companies and presented investment possibilities for foreign investors interested in entering the Uzbek market and implementing innovative solutions in the country.
🌐Read more on out website
Telegram | Instagram | Facebook | Youtube | LinkedIn
#expo
👍 IT Park Uzbekistan ijrochi direktori Abdulahad Kuchkarov boshchiligidagi delegatsiya IT Park Bosh direktori maslahatchisi Ahmad Abulaz ishtirokida Orlandoga samarali tashrif buyurib, O‘zbekistonni yangi autsorsing va IT-xizmatlar markazi sifatida targ‘ib qildi.
Tashrif doirasida IT Park jamoasi “ICMI Contact Center Expo” va “Gartner IT Symposium/XpoTM” kabi yirik xalqaro tadbirlarda ishtirok etdi, shuningdek, xorijiy IT va autsorsing kompaniyalari vakillari bilan bir qator uchrashuvlar o‘tkazdi.
Batafsil veb-saytimizda
________
👍 A delegation from IT Park Uzbekistan, led by Executive Director Abdulakhad Kuchkarov and joined by Advisor to IT Park CEO Ahmed Aboulezz, conducted a productive visit to Orlando, promoting Uzbekistan as an emerging hub for outsourcing and IT services.
During the visit, the IT Park delegation participated in prominent international events, including the ICMI Contact Center Expo and Gartner IT Symposium/Xpo™, and engaged in a series of meetings with representatives from global IT and outsourcing firms.
🔗 Read more on the website
Telegram | Instagram | Facebook | Youtube | LinkedIn
В Сербии в мае заработает приложение EXPO-2027, в котором представители бизнеса смогут связываться с иностранными компаниями, участниками глобальной экономической выставки со всего мира
Кроме того, приложение, в котором пользователи смогут выбрать сферу экономических интересов, будет само предлагать вам подходящие компании, позволит не только устанавливать желаемые контакты, но и бронировать конференц-залы на форумах EXPO для деловых встреч.
Генеральный директор компании «EXPO 2027 Белград» Данило Еринич назвал это приложение проектом национального значения и подчеркнул, что его цель – собрать как можно больше пользователей, которые смогут установить новые экономические связи.
#EXPO#Сербия#экономика
@NewsSerbia
Первые километры рельсов: на железной дороге к EXPO в Белграде приступили к укладке путей
В Сербии продолжается масштабная стройка железнодорожной ветки, которая навсегда изменит транспортную схему столицы. Проект свяжет станцию Земун-Поле, аэропорт Никола Тесла и будущий Национальный стадион в Сурчине.
Работы на 18-километровой линии от Земун-Поле до стадиона вошли в активную фазу. На сегодняшний день строители уже уложили более 4,3 км рельсового полотна.
В районе Сурчина продолжается возведение самого сложного объекта маршрута – виадука длиной 1,2 км. Инженеры планируют полностью завершить основные конструкции моста над автомагистралью уже в следующем месяце. На станциях «Аэропорт» и «Сингидунум» строительные бригады закончили бетонные работы в подземных переходах и приступили к монтажу лифтовых шахт.
Проект идет строго по графику: поставка первой партии из девяти новых скоростных поездов ожидается в конце этого года.
#Сербия#Белград#EXPO
@NewsSerbia
Фан-факт, которому в этом году исполнилось 50 лет. «Джоконда» Леонардо да Винчи выставлялась в Москве в 1974 году.
Привезти «Джоконду» в Москву придумала Ирина Антонова – тогдашний директор Государственного музея изобразительных искусств им. Пушкина. А реализовала – министр культуры СССР Екатерина Фурцева.
В 1974 году «Джоконда» выставлялась в Японии. Антонова узнала об этом из газет и тут сообразила, что, наверное, картина летела в Японию через Москву. И, скорее всего, также будет лететь назад.
Антонова связалась с Фурцевой и предложила безумную идею – сделать «Джоконде» пересадку в Москве. По воспоминаниям Антоновой Фурцева сказала: «Французский посол в меня влюблен. Поговорю с ним, может, во имя любви договорится со своими».
Через месяц французы дали согласие.
«Джоконда» шесть недель выставлялась в Пушкинском музее.
Для осмотра сделали круговой обход. У зрителей было несколько мгновений, чтобы полюбоваться шедевром.
Люди отстаивали огромные очереди по семь-восемь часов – всё ради нескольких секунд.
Тогда «Джоконду» увидели около полутора миллиона советских людей.
#belles_histoires_humaines
#expo
👋Мистер Снеговик 20-метровой высоты появился в этот понедельник перед входом в городской парк Харбина на северо-востоке Китая. Именно здесь совсем скоро стартует International Snow Sculpture Art Expo
#expo#это_китай
Друзья, 1 марта на выставке Мир Охоты и Рыбалки прошла очередная Заруба. Соревнования традиционно проходили в атмосфере упорной борьбы и с яркими эмоциями.
Фаворитами были Сергей Жиров (31 секунда), и Ян Корнев (29 секунд). 🏆 Ян занял 1 место, но рекорд установленный на прошлом московском Клинке в 26,8 секунды все-таки не побил. Сергей показал рекордное время в 21 секунду, но набрал штрафные баллы, не попав по шарику.
В-общем, следующая Заруба на Клинке через месяц обещает быть жаркой. Спортсмены заряжены на новый рекорд!
#заруба#expo
Дорогие любители острого!
Хотим поделиться яркими моментами Зарубы с февральской выставки Клинок на Неве.
Ждем вас на соревнованиях Заруба в Москве сегодня
На выставке Мир Охоты и Рыбалки в Крокус Экспо.
📣 В 15:30 - начало соревнований
Оставляйте заявку, приходите с ножом в 14:00 и пишите - мы встретим вас!
Подробности прохождения на видео🫲
#Заруба#expo