Можно ли в 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
🇨🇳🇹🇲China VP visits Turkmenistan amid Hormuz blockade
China's Vice-Premier Ding Xuexiang will travel to Turkmenistan on Wednesday to attend the groundbreaking ceremony for the fourth phase of the Galkynysh gas field as President Xi Jinping's special representative. Ding will also co-chair the seventh meeting of the bilateral cooperation committee with Turkmenistan, a major pipeline gas supplier to China.
The visit follows a US blockade of Iranian ports in the Strait of Hormuz, disrupting one of the world's primary maritime corridors for oil and gas shipments. China's gas imports fell 4 percent year-on-year in the first quarter of 2026 to 28.1 million metric tonnes, while crude oil imports rose 8.9 percent overall but declined 2.8 percent in March alone.
Turkmenistan currently supplies around 40 billion cubic metres of gas annually to China and has indicated an intention to raise that figure to 65 billion cubic metres. China National Petroleum Corporation signed an agreement with Turkmenistan in March to design and construct facilities capable of processing up to 10 billion cubic metres of gas per year.
#China#Turkmenistan
@asianomics
«Аль-Наср» в Ашхабаде! 🇸🇦🇹🇲
На Олимпийском стадионе столицы прошла пресс-конференция в преддверии долгожданного матча между ФК «Аркадаг» и саудовским грандом «Аль-Наср».
Главный тренер Жорже Жезуш и вратарь Бенто Матеус поделились ожиданиями от предстоящей игры:
⚽️ О сопернике: «»Аркадаг» — очень молодой клуб, но мы уже изучили их технику, стиль защиты и атаки. Мы готовы к этой встрече».
⚽️ О составе: Тренер подтвердил, что Криштиану Роналду и ряд ключевых игроков остались в Саудовской Аравии. Причина — плотный график и важный матч против «Аль-Фатеха» уже 14 февраля.
Несмотря на отсутствие капитана, «Аль-Наср» настроен решительно: «Мы очень рады, что Аль-Наср будет здесь завтра представлять саудовский футбол. Мы уверены, что завтра будет сложный матч, но мы готовы к игре».
Ждем игру! Которая состоится уже завтра, 11 февраля.
#turkmenistan#ashgabat#saudi#arkadag#alnassrfc
🇮🇳🇺🇿 Контейнерные перевозки из Индии в Узбекистан запустили по новому маршруту
Как пишет LogiStan, компания «Узтемирйулконтейнер» организовала новый мультимодальный маршрут для контейнерных перевозок из индийских портов Мундра, Нхава-Шева и Ченнаи в Узбекистан.
Грузы доставляют по морю из Индии в иранский порт Бандар-Аббас, а затем по железной дороге транзитом через 🇮🇷Иран и 🇹🇲Туркменистан до станции Сергели.
Время доставки планируют сократить до 15 дней.
P.S.: Особенно приятно видеть, что контейнерной обработкой, с помощью #AXELOTTOS , по данному маршруту занимаются наши друзья из компании FDP💪
У них кстати еще и ТГ-канал есть🚂
#LOGISTICS#RAILWAY#UZBEKISTAN#IRAN#TURKMENISTAN#INDIA
4 membri dell'Organizzazione degli Stati turchi; #Kazakistan, #Turkmenistan, #Uzbekistan e #Kirghizistan, hanno votato, al Consiglio di Sicurezza dell'#ONU per sostenere la sovranità di #Cipro e condannare la presenza della #Turchia sull'isola.
🇹🇲Наш игрок — в составе национальной сборной!
Игрок ФК «Кыргызалтын» Мелис Диниев принял участие в матче отборочного этапа Кубка Азии-2027, где сборная Туркменистана обыграла команду Шри-Ланки со счётом 2:1! ⚽️
Матч группы D прошёл в городе Аркадаг.
Поздравляем Мелиса и всю сборную Туркменистана с важной победой и желаем дальнейших успехов в квалификации! 💪💛💙
#Кыргызалтын#Turkmenistan#AFCAsianCup#Диниев#КыргызалтынФК
🌐 Hey, young professionals from #CentralAsia, including those from #Uzbekistan, #Kazakhstan, #KyrgyzRepublic, #Tajikistan, and #Turkmenistan, apply for the World Bank Group's Young Professional Program (WBG YPP) to join our global team!
🤝 Through the WBG YPP, we select top talent to advance the World Bank Group’s mission. Nearly a thousand YPP alumni work at the World Bank Group today, at the World Bank, IFC, and MIGA.
Eligibility Requirements
✅ Date of birth on or after October 1, 1992.
✅ Nationality of a WBG member country (nationals of all Central Asian countries are eligible to apply).
✅ Over 4 years of full-time work experience after successfully completing undergraduate studies.
✅ Completion of a masters-level degree or equivalent in a relevant field, or a higher qualification in a relevant field, before September 1, 2025.
✅ Excellent command of spoken and written English language (fluency in other languages might be advantageous to your application).
Contract Terms
📝 If you are invited to join the Program, your offer will include a 5-year term contract as a mid-career staff member (GF level) that may be renewable based on performance.
🛂 You also might be eligible for a US visa (G-type) for you and your dependents.
🌍 You may be located in Washington, DC, or any of the WBG country offices worldwide, and must be prepared to relocate accordingly.
🔎 Learn more: http://wrld.bg/wOKz50T4hQQ#WBGYPP