Можно ли в 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
#Coming_UP: The Standard Signal | Ep.14: Tigray on the Brink: Survival, Famine Risks, and the Shadow of Renewed War in Ethiopia.
Tigray is facing fragile recovery, deepening humanitarian strain, and growing fears of renewed war.
Duke Burbridge shares what he witnessed on the ground — from survival and displacement to aid challenges and famine risks.
Premiers at: 7:30 PM tonight.
Subscribe to watch: https://www.youtube.com/@AddisStandard
#Tigray#Ethiopia#News#TheStandardsignal#AddisStandardSignal
This is a haunting question that cuts to the heart of Ethiopia’s ongoing cycle of political violence.
“What are we giving birth to through all this killing?”
In this powerful reflection from The Standard Signal EP.16, the conversation confronts the brutal reality of unresolved killings, missing justice, and the human cost of political conflict—from Negele Borena to Harar to Ambo.
Two years after the assassination of Bate Urgessa, the questions of accountability and justice remain painfully unanswered.
🎥 Watch the full episode of The Standard Signal on: https://www.youtube.com/watch?v=gAXvr9JN3Y8
#BateUrgessa#Ethiopia#JusticeDelayed#HumanRights#PoliticalViolence#TheStandardSignal#NeverForget
“Politics took journalism away from me.”
A powerful reflection on media freedom and political pressure.
Watch the full episode of The Standard Signal on YouTube
🔗https://www.youtube.com/watch?v=JCF8w7rEYhQ&t=1430s
#TheStandardSignal#EthiopiaPolitics#Misteresillasie#ElectionDebate#PoliticalVoices#WomenInPolitics
#Premiering_now: From Newsroom to Frontline: Mistresillasie on Power, War & Resistance
#TsedaleLemma speaks with #MistresillasieTamrat.
Click here to watch: https://www.youtube.com/watch?v=JCF8w7rEYhQ
#TheStandardSignal#EthiopiaPolitics#Misteresillasie#ElectionDebate
#PoliticalVoices#WomenInPolitics
#Coming_UP: The Standard Signal | Ep.17: From Newsroom to Frontline: Mistresillasie on Power, War & Resistance
#TsedaleLemma speaks with #MistresillasieTamrat.
From her striking statement, “politics took journalism away from me,” to her defense of possible participating in upcoming elections, Mistresillasie speaks with clarity.
Premiers at: 7:30 PM EAT tonight.
Subscribe to watch: https://www.youtube.com/@AddisStandard
#TheStandardSignal#EthiopiaPolitics#Misteresillasie#ElectionDebate
#PoliticalVoices#WomenInPolitics
#Coming_UP: The Standard Signal | Ep. 10: PM Abiy Ahmed, Ethiopian Intellectuals, and Power
Prime Minister Abiy Ahmed’s January lecture at Addis Abeba University framed itself as a reflection on intellectuals, leadership, and national prosperity, defining who counts as an intellectual and assessing the role of ideas and academic institutions in Ethiopia’s history.
But who defines intellectuals? Why does it matter?
In this episode of The Standard Signal, Tsedale Lemma speaks with historian and public intellectual Ezekiel Gebissa to critically examine the lecture, probing what happens when power speaks in the language of ideas, and how this shapes intellectual autonomy and epistemic freedom.
Premiers at: 7:30 PM tonight.
Subscribe to watch: https://www.youtube.com/@AddisStandard
#Ethiopia#EthiopianIntellectuals#PowerAndIdeas#AcademicFreedom#AAU75#PublicIntellectuals#PoliticsAndKnowledge#TheStandardSignal
#Coming_UP: The Standard Signal | Ep. 09: Red Sea Rubicon: Ethiopia at the Crossroads of the tectonic shift in Horn’s Geopolitics
Ethiopia calls Red Sea access “existential.” But is this strategy, or a dangerous doctrine?
Israel recognizes Somaliland. UAE-Saudi rivalry intensifies. Egypt pressures Addis Abeba. The African Union struggles.
Tsedale Lemma & Ayana Feyissa break down Ethiopia’s choices in a zero-sum Horn of Africa.
#Ethiopia#HornOfAfrica#RedSeaAccess#Somaliland#Somalia#Geopolitics#AfricanUnion#ForeignPolicy#SaudiUAErivalry#Israel#Türkiye#StrategicAmbiguity#TheStandardSignal
#Premiering_now: Two Years Without Justice: Remembering the BrutalAssassination of Bate Urgessa
April 9, 2024, a night that ended in a brutal execution a husband, a father of five, an intellectual and a peaceful politician.
Two years later, the questions remain.
Click here to watch: https://youtu.be/gAXvr9JN3Y8?si=q7C8otTOvcTw_fZ5
In this commemorative episode of The Standard Signal, host Tsedale Lemma discusses with Prof. Ezekiel Gebissa to revisit the life, final hours, and aftermath of Bate Urgessa’s brutal assassination by government forces, and examine what has (and hasn’t) changed since.
#BateUrgessa#Ethiopia#JusticeDelayed#HumanRights#Oromo#OLF#PoliticalViolence#Accountability#AfricaNews#HornOfAfrica#TheStandardSignal#NeverForget
The Standard Signal Ep 16| Two Years Without Justice: Remembering the Brutal Assassination of Bate Urgessa
On April 9, 2024, Bate Urgessa was brutally assassinated by government forces.
This special episode revisits the timeline, and what it reveals about justice and political space in Ethiopia today.
#TsedaleLemma in conversation with #EzekielGebissa
Premiers tonight at 7:30 PM EAT
Subscribe to watch: https://youtube.com/@addisstandard
#BateUrgessa#Ethiopia#Anniversary#JusticeDelayed#HumanRights#PoliticalViolence#Oromo#OLF#Accountability#HornOfAfrica#TheStandardSignal
#Coming_UP: The Standard Signal | Ep. 13 - The UK’s “New Africa Approach”: Press Freedom, Human Rights, Investment, Migration, and Power Politics in Ethiopia
What’s actually new about the UK’s “New Africa Approach”?
#TsedaleLemma speaks with #LukeBullock
Premiers at: 7:30 PM EAT tonight.
Subscribe to watch: https://www.youtube.com/@AddisStandard
#TheStandardSignal#UKAfricaPolicy#UKInEthiopia#HornOfAfrica#Geopolitics#DevelopmentAndSecurity#ForeignPolicy#Ethiopia#RedSea#Tigray#Eritrea#Somaliland#Israel
#Coming_UP: The Standard Signal | Ep. 11: Meles Zenawi’s Nightmare Revisited: GERD, Gulf Money, and the Unmaking of Sovereignty
Fifteen years ago, Ethiopia’s late Prime Minister Meles Zenawi warned that his nightmare would be an “Egyptian agenda financed by Gulf money.”
Has Meles Zenawi’s nightmare already arrived?
#TsedaleLemma speaks with #JawarMohammed.
Premiers at: 7:30 PM tonight.
Subscribe to watch: https://www.youtube.com/@AddisStandard
#GERD#HornOfAfrica#Ethiopia#GulfPolitics#UAE#SaudiArabia#NilePolitics#AfricanGeopolitics#Sovereignty#MiddleEastAfrica#TheStandardSignal
#Premiering_now: The Standard Signal | Ep.15: Ethiopia Under Pressure: Fuel Crisis, Global & Regional Instability, a Fragile Election | Jawar Mohammed
Click here to watch: https://www.youtube.com/watch?v=HexAbPk8Dkw
Ethiopia is facing mounting pressures. In Episode 15 of The Standard Signal, host Tsedale Lamma brings Jawar Mohammed to discuss the deepening fuel shortage and corruption concerns in Ethiopia, the looming fertilizer crisis and its implications for food security, and the impact of Middle East war on Ethiopia’s economy and stability.
#AddisStandard#TheStandardSignal#Ethiopia#JawarMohammed#EthiopiaPolitics#Corruption#FuelCrisis#HornOfAfrica#Tigray#Amhara#Oromia#EthiopiaElection#AfricaPolitics#EthiopiaNews#AfricanPolitics#Geopolitics