Можно ли в 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
#SriLanka
Il presidente dell'assemblea nazionale Imaduwa Pradeshiya è morto durante le proteste per un infarto, dopo che dei manifestanti hanno dato alle fiamme la sua abitazione. Nello stesso giorno, è stato appiccato un incendio anche nella casa dell'ex primo ministro.
@UltimoraPolitics
🇱🇰Sri Lanka Raises Cooking Gas Prices 23%
Sri Lanka raised liquefied petroleum gas prices on April 6, citing higher global prices driven by the Iran war. State-owned Litro Gas, the main domestic LPG supplier, increased the price of a 12.5kg refill from 3,990 rupees to 4,765 rupees, a rise of 19.42 per cent.
A private supplier holding roughly a quarter of the domestic market raised its retail price by 23 per cent to 5,700 rupees. A Litro spokesperson attributed the revision to higher global LPG prices and increased shipping costs, and confirmed supplies sufficient for the entire month of April.
The April increase follows an eight per cent hike in March, when Sri Lanka also raised fuel and electricity prices by more than a third. Sri Lanka's government has previously stated that a prolonged conflict in the Middle East could undermine the country's recovery from its 2022 economic crisis, noting that the Strait of Hormuz has been effectively closed since the conflict began.
#SriLanka
@asianomics
🇱🇰Sri Lanka Battles Energy Crisis, Economic Strain
Sri Lanka's government has rationed fuel, raised fuel prices by a third, and increased electricity costs by up to 40 per cent since the Middle East war began disrupting global energy supplies. The measures compound the economic damage from Cyclone Ditwah, which killed 641 people and caused an estimated US$4.1 billion in damage late in 2025.
President Anura Kumara Dissanayake's administration is also managing review conditions tied to a US$2.9 billion IMF bailout loan, with a US$700 million instalment pending. Sri Lankan authorities have indicated they may request modifications to the loan's austerity conditions given the deteriorating external environment.
The Frontline Socialist Party, which led the 2022 protests that removed former president Gotabaya Rajapaksa, has warned that the current administration may face a similar political implosion. Human rights lawyer Bhavani Fonseka noted that emergency laws, introduced after Cyclone Ditwah, give authorities broad powers to arrest and detain, which could limit public protest activity.
#SriLanka
@asianomics
🗺Sri Lanka 🇱🇰
The Red Mosque (Jami Ul-Alfar Masjid) in Sri Lanka is a towering structure in the heart of Colombo's commercial district, Pettah.
Each brick of the building is painted red and white, featuring Indo-Saracenic architecture with pomegranate-shaped domes.
Today, it is the largest mosque in Sri Lanka, accommodating up to 10,000 worshippers.
#SriLanka
@voyage
🇱🇰#SriLankaОбразуются длинные очереди для посещения резиденции президента, занятой в течение трех дней демонстрантами ⚠️☝️
💬Даже в условиях революции и госпереворота люди культурно стоят в очереди, уважая друг друга!
🇱🇰#SriLankaПротестующие на Шри-Ланке нашли миллионы рупий в захваченной резиденции президента страны ⚠️☝️
💬Все деньги передали в службу безопасности для восстановления страны.
🇱🇰#SriLankaПротестующие Шри-Ланки обживаются в президентском особняке ⚠️☝️
💬Второй день они купаются в президентском бассейне и занимаются в его фитнес-центре, а так же устраивают пир в его столовой!
💬 Сам президент успел сбежать до штурма дворца. Он покинул Шри-Ланку на частном самолёте.
🇱🇰#SriLankaПротестующий народ Шри-Ланки ворвался в резиденцию президента ⚠️☝️
💬 Президент Шри-Ланки успел сбежать до того, как туда прорвались бунтующие граждане.
💬 Страна уже несколько месяцев живет совершенно без топлива, испытывает проблемы с электроэнергией и продовольствием.
🇱🇰#SriLankaПротестующий народ Шри-Ланки ворвался в резиденцию президента ⚠️☝️
💬 Президент Шри-Ланки успел сбежать до того, как туда прорвались бунтующие граждане.
💬 Страна уже несколько месяцев живет совершенно без топлива, испытывает проблемы с электроэнергией и продовольствием.
Protests continue in Sri Lanka, despite the imposition of a state of emergency. People are demanding the resignation of President Gotabaya Rajapaksa.
Anti-Russian sanctions have exacerbated the economic crisis, and prices in the country have skyrocketed. The cost of basic foodstuffs has more than doubled. Locals queue up for paraffin. They need fuel to cook food.
The ‘hottest’ point of the protests is near the secretariat of the head of state. A tent camp was set up there. People have travelled from all over the country. Among the protesters is Mahindi Siri, a 40-year-old Special Forces soldier. He lost a leg after being blown up by a landmine while fighting in the north. The war ended 13 years ago. He never imagined he would have to count every rupee to survive.
This footage was shot by an RT Documentary team in Sri Lanka, making a new film about how the country is coping with the economic crisis. It’s premiering soon.
#video#SriLanka
Follow: https://t.me/rtdocumentary