Можно ли в 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
⏺Le journaliste de #RT international, Ali Rida, fait état d'une détérioration rapide de la situation dans le sud du Liban, notamment dans la région de Nabatieh.
Selon lui, l’armée israélienne a menacé de frapper plusieurs villages, dont Harouf et Jibchit, obligeant les équipes sur place à se mettre à l’abri.
RT en français • Osez questionner !
⏺Le journaliste de #RT international, Ali Rida, fait état d'une détérioration rapide de la situation dans le sud du Liban, notamment dans la région de Nabatieh.
Selon lui, l’armée israélienne a menacé de frapper plusieurs villages, dont Harouf et Jibchit, obligeant les équipes sur place à se mettre à l’abri.
RT en français • Osez questionner !
💚 Margarita Simonian, rédactrice en chef de #RT et de l'agence de presse internationale Rossia Segodnia, adresse ses vœux aux soldats russes pour l’année 2026.
RT en français • Osez questionner !
У меня вопрос к журналистам #RT , друзья, а вам не пох на то, что говорит этот патлатый?
Вас читают миллионы. Его - ну пара тысяч. Зачем вы доносите его точку зрения до масс?! Без вас о нем бы давно забыли, как и о Лазаревой, Пугачевой, Галкине и иных душой уродливых существ.
https://t.me/rt_russian/195363
Телеканал «Россия сегодня» празднует 20-летие. Выступая на торжестве в Большом театре, В. Путин назвал RT «глобальным брендом, о котором знают сегодня во всем мире». С юбилеем #RT!
💚🇮🇳RT lance une nouvelle chaîne destinée au public indien
Ce 5 décembre, #RT lance la diffusion de sa chaîne d'information dédiée au public indien : RT India. La nouvelle chaîne sera basée dans la capitale indienne, New Delhi. Notre envoyé spécial Antoine Cléraux a visité la salle de rédaction de RT India.
RT en français • Osez questionner !
📢RT Academy's first international online course for journalists has come to an end. More than 300 students from #ASEAN and South Asia region boosted their skills of TV & Online Journalism and learned about the news making pipeline from producing stage to post-production.
🟩 Only around 200 of them managed to pass through all the tasks to receive #RT Academy certificates and continue their media journey with the team.
🟩 We are happy that our ASEAN friends took an active part in the RT Academy course. 65 students came from Indonesia 🇮🇩, 33 from Myanmar 🇲🇲, 8 from Vietnam 🇻🇳, 20 from Malaysia 🇲🇾, 10 from Singapore 🇸🇬, 4 from Thailand 🇹🇭, 1 from Brunei 🇧🇳, 5 were representing the Philippines 🇵🇭, 9 participants were from Cambodia 🇰🇭, 1 from Laos 🇱🇦 and 1 student was from Timor-Leste 🇹🇱. Another large group represented South Asian nations.
🟩 As their final assignment, the students prepared real TV news reports, with topics ranging from breaking news to economy and regional politics.
🟩 In 2023 RT International chose Jakarta 🇮🇩 - the host city of the ASEAN Headquarters, as the location for its representative office in the region. In September 2023, Indonesia also became the destination for RT's first international educational program - 2-day seminars on TV journalism, which were held in Jakarta, with 75 journalism students, TV, radio and newspaper journalists in attendance.
❗️Africa and China 🇨🇳 are the next planned destinations of the RT's educational schedule in the fall оf 2024.
#личное
Сегодня свои 20 лет отмечает телеканал #RT.
Я не знаю, сколько Россия тратит на этот телеканал, но я знаю, что каждый рубль, который идет на них сохраняет нам миллионы рублей, которые мы тратили бы, не будь у нас этой мягкой силы. Этой работы с внешними обществами. Этой сложной, выстроенной на эмоциях и фактах пропаганды позитивного образа каждого из нас.
От души поздравляю всех причастных к этой работе!
📢RT Academy's first international online course for journalists has come to an end. More than 300 students from #ASEAN and South Asia region boosted their skills of TV & Online Journalism and learned about the news making pipeline from producing stage to post-production.
🟩 Only around 200 of them managed to pass through all the tasks to receive #RT Academy certificates and continue their media journey with the team.
🟩 We are happy that our ASEAN friends took an active part in the RT Academy course. 65 students came from Indonesia 🇮🇩, 33 from Myanmar 🇲🇲, 8 from Vietnam 🇻🇳, 20 from Malaysia 🇲🇾, 10 from Singapore 🇸🇬, 4 from Thailand 🇹🇭, 1 from Brunei 🇧🇳, 5 were representing the Philippines 🇵🇭, 9 participants were from Cambodia 🇰🇭, 1 from Laos 🇱🇦 and 1 student was from Timor-Leste 🇹🇱. Another large group represented South Asian nations.
🟩 As their final assignment, the students prepared real TV news reports, with topics ranging from breaking news to economy and regional politics.
🟩 In 2023 RT International chose Jakarta 🇮🇩 - the host city of the ASEAN Headquarters, as the location for its representative office in the region. In September 2023, Indonesia also became the destination for RT's first international educational program - 2-day seminars on TV journalism, which were held in Jakarta, with 75 journalism students, TV, radio and newspaper journalists in attendance.
❗️Africa and China 🇨🇳 are the next planned destinations of the RT's educational schedule in the fall оf 2024.
🦠Les plus grands virus ont été découverts dans le pergélisol, et nombre d'entre eux sont inoffensifs pour l'homme.
Le biologiste moléculaire Piotr Tchoumakov l'a expliqué lors d'un entretien avec #RT. Parmi les virus découverts, certains avaient vécu dans des amibes pendant 40 000 ans :
« Ni chez l'homme, ni chez le mammouth, mais dans les amibes. Ils ne présentent manifestement aucun danger », a précisé le scientifique.
Сe membre de l'Académie des sciences de #Russie a souligné que le danger le plus important ne provient pas du pergélisol, mais des nécropoles :
« Par exemple, là où y a eu une épidémie de peste, des gens ont été enterrés… Mais on peut le détecter assez rapidement et déterminer si des mesures peuvent être prises. »
RT en français • Osez questionner !
🎉Поздравляем телеканал RT с 20-летием! Этот юбилей — важная веха в истории проекта, который за два десятилетия стал не только значимым источником информации, но и платформой для диалога между культурами и народами.
Ваш профессионализм, стремление к объективности и высокие журналистские стандарты сделали RT узнаваемым брендом на международной арене. Вы успешно представляете Россию, демонстрируя многообразие мнений и взглядов, а также способствуя укреплению связей между странами.
🫥 Благодаря нашим совместным инициативам мы смогли донести до широкой аудитории уникальные истории, культуру и достижения России!
Желаем команде RT успехов, творческих свершений и новых достижений! Пусть каждый день работы приносит вдохновение и радость, а ваш голос продолжает звучать громко и уверенно в мире!
#Россия#RT