Можно ли в 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
From #AS_Archive
Op-ed: Human Rights Under Siege: How security forces in #Oromia fuel terror and fear to control residents through lawlessness
Many have been shocked by reports of the wanton violence gripping #Ambo in West Shewa zone of Oromia, detailed in recent news coverage, including by Addis Standard, and a wave of social media posts over the past three days describing fear, abuse, and alleged attacks by a group known as “120.”
Yet these revelations are less surprising than they are confirming, pointing to a deeper breakdown of law and order in the region.
In January 2025, Addis Standard warned of the long-term risks posed by the expansion of irregular security structures and coercive enforcement practices across parts of Oromia.
Accounts now emerging from Ambo, of harassment, extortion, and unchecked violence, echo those earlier concerns about the human cost of a security approach increasingly described by residents as rule by fear.
Revisit the full version the 2025 op-ed in our archive for deeper context and analysis.
https://addisstandard.com/human-rights-under-siege-how-security-forces-in-oromia-fuel-terror-fear-to-control-residents-through-lawlessness/
#Ethiopia: Residents of #Ambo recount a city ‘under siege’ by ‘criminal gangs’ after social media revelations expose disturbing abuses
Residents of Ambo city, in west #Shewa zone of #Oromia regional state, say they are “living in fear” amid “a pattern of violence, intimidation, and impunity.”
Many are speaking up following a wave of social media posts over the past two days that have brought renewed scrutiny to rampant abuses in the city of civilians by organized group of men called “120”.
Multiple videos and pictures, shared widely on social media networks and echoed in messages sent to Addis Standard, describe incidents ranging from public beatings and arbitrary detention to extortion and, in some cases, killings.
While Addis Standard did not independently verify these videos and pictures, residents who reached out pleasing to share their accounts speak of a harrowing experience over the past “two years.”
“We are living in a city under siege,”
Read more: https://addisstandard.com/?p=56525
News: Fuel shortages deepen in #Addis_Abeba, regional cities as drivers endure prolonged queues
Drivers in Addis Abeba and several regional cities report worsening fuel shortages, with prolonged queues and dwindling supplies deepening the strain caused by recent price hikes.
At present, beyond rising costs, fuel is reportedly becoming increasingly scarce in cities including #Mekelle, #Jimma, #Ambo and #Bahir_Dar. Drivers who spoke to Addis Standard described spending hours in queues at fuel stations, often with no guarantee of securing supply.
A public transport driver in Mekelle said the situation has deteriorated sharply. “Beyond the price hike, it feels like fuel is heading toward complete disappearance. We are buying a 20-litre jerrycan for 8,000 birr, and that too after waiting in line for more than five hours,” he said.
Read more: https://addisstandard.com/?p=55586
News: EPRP calls for nationwide protest on May 8 amid concerns over electoral conditions
The Ethiopian People’s Revolutionary Party (#EPRP) has called for a nationwide peaceful protest to be held on May 8, 2026, citing what it described as the absence of “enabling conditions” for a credible election in #Ethiopia.
In a statement sent to Addis Standard today, the party said the planned demonstrations will take place in several major cities, including #Addis_Abeba, #Mekelle, #Bahir_Dar, #Gondar, #Hawassa, #Adama, and #Ambo, urging #Ethiopians to join what it described as a peaceful effort to demand political reforms.
The EPRP said it supports the transfer of power through elections but argued that current conditions do not allow for a “free, fair, and credible” vote. It accused the ruling Prosperity Party of attempting to conduct what it termed a “pseudo-election” aimed at extending its hold on power, describing the process as
Read more: https://addisstandard.com/?p=56410
Area Sales Manager
#ethiochicken_ethiopia
#business
#Bule | #Ambo | #Gambela | #Ginir | #Hosaena | #Yirgachefe | #Sheno
BSc Degree in Animal Science, Veterinary field of study
Duties & Responsibilities:
- Develop specific plans to ensure sales growth agent appointment in the territory
- Map how to achieve sales volume through prioritizing to make big achievement with minimum effort and shorter time
Quanitity Required: 20
Minimum Years Of Experience: #0_years
Deadline: December 16, 2023
How To Apply: Submit your applications (Cover Letter) including a detailed CV via email: [email protected]
N.B: Please title your application with the subject line: - " Area Sales Manager" and Specify the area you are applying for
#In_Depth_Analysis: The #Hormuz Entanglement: Why #Ethiopia’s fuel crisis is a perfect storm of #war, #graft, and #reform
While the immediate catalyst appears to be the high-stakes military escalation between the U.S., Israel, and Iran, a deeper look reveals that Ethiopia’s fuel misery is a complex entanglement. It is a “perfect storm” where geopolitical vulnerability, a domestic system rotting from within, and a painful macroeconomic experiment have collided to leave 120 million people running on empty.
Until the govt can clean its own house, root out the “senior decision-makers” profiting from the black market, and navigate the treacherous waters of Middle Eastern diplomacy, the accounts emerging from #Gonder to #Jimma to #Ambo, and from #Hawassa to #Bishoftu and #Mekelle, point to an Ethiopia that will remain running on empty.
It will be a country “stalled at the intersection of a distant war it cannot control and a local crisis of governance it has yet to master”...
https://addisstandard.com/?p=56099