Можно ли в 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
LIVE IN 30 MINUTES❕
The implementation of Nigeria's #OneHealth strategic plan requires multidisciplinary & intersectoral collaboration which cuts across several key sectors.
Register to join us to discuss:
"Connecting Air, Land and Water: When we protect one, we protect all"
🕗 9:00 AM
🔗
https://bit.ly/OneHealthConference24
📣COMING UP
"Connecting Air, Land and Water: When we protect one, we protect all"
Register to join our upcoming #OneHealth virtual event organised in collaboration with other #onehealth stakeholders and support from Global Implementation Solutions
🗓️ March 6, 2024
🕗 9:00 AM
🔗
https://bit.ly/OneHealthConference24
🌍Register To Attend
#OneHealth is not a new concept, but it has become more important in recent years
On the 6th of March, in collaboration with other #onehealth stakeholders and support from Global Implementation Solutions, we will be delving into in-depth discussions on "Connecting Air, Land and Water: When we protect one, we protect all"
Register to join in⬇️
https://bit.ly/OneHealthConference24
⏳ONE HOUR TO GO
Register to join our Head of Comms, Dr Yahya Disu at the @WHO EPI-WIN webinar to discuss the importance of a #OneHealth approach in "Preventing Epidemics & Pandemics in Communities"
🗓️TODAY, 13 September 2023
🕚12:00 P.M.
🔗https://www.who.int/news-room/events/detail/2023/09/13/default-calendar/epi-win-webinar-preventing-epidemics-and-pandemics-in-communities--through-the-one-health-approach
Not all fever is malaria. #LassaFever can start with mild symptoms but may become severe if not treated early. Early detection and treatment save lives!!
✅ Protect yourself and loveones by:
* Keeping your home and surroundings clean
* Keep rodents out of your home
* Visit the nearest health center if you feel sick
Remember prevention is better than cure!
#LassaFever#NCDCNigeria#OneHealth
A #OneHealth approach to disease prevention recognises that the health of people is closely connected to the health of animals and our shared environment.
By protecting one, we help protect all!
#OneHealthNigeria
This #WorldRabiesDay2023, let's unite for a common cause: protecting the health of humans, animals & the environment!
Embrace the "All for 1, #OneHealth for all" theme and join the fight against rabies.
Raise awareness ✅
Vaccinate your pets✅
Together, we can make a rabies-free world a reality!
Learning from the last pandemic, it is evident that our country needs a robust health security infrastructure with an emphasis on:
➡️Prevention
➡️Disease surveillance
➡️Preparedness and response capabilities.
Nigeria's Pandemic Fund application cuts across strengthening #OneHealth workforce, early warning and surveillance and laboratory systems.
#PandemicFundNigeria
🐄🐕 Happy World Veterinary Day 2026! 🩺🌍
Theme: Veterinarians: Guardians of Food and Health
Veterinarians play an invaluable role in ensuring animal welfare, safe food production, disease prevention, and public health protection.
Proud to be part of a profession serving both animals and society every day. 👏🐾
#WorldVeterinaryDay2026#ProudToBeAVet#OneHealth
https://t.me/vets_hub
Antimicrobial Resistance (AMR) Awareness Week
Did you know the Current Data on AMR ?
📊Statistics on AMR
• Over 700,000 deaths globally each year are linked to drug-resistant infections.
• In some countries, up to 50% of antibiotics prescribed in healthcare settings are unnecessary.
• Agricultural use accounts for nearly 80% of all antibiotics sold in some regions, contributing significantly to resistance.
• By 2030, it is projected that AMR could lead to an economic burden of up to $100 trillion globally.
Let’s take action now to combat AMR for a healthier future! 💪#AMRAwareness#FightAMR#OneHealth
Join us:
Telegram | Instagram | Linkedln
Last Friday, the National One Health Technical Committee (NOHTC) brought together key stakeholders across human, animal, and environmental health to:
✅ Review progress on previous action points
✅ Share updates on ongoing programmes and current outbreaks
✅ Align strategies to strengthen Nigeria’s health security through coordinated, multisectoral action
Together, we’re advancing a resilient, data-driven OneHealth system for prevention, preparedness, and response.
#HealthSecurity#NCDCNigeria#PublicHealth#OneHealth
🎉 Друзья!
Сегодня мы отмечаем День ветеринарного работника — праздник тех, кто посвятил себя заботе о здоровье животных и экосистем! 🐾
Факультет БиоВетМед Института живых систем ДГТУ — гордость нашего университета!
За несколько лет он стал лидером в ветеринарии, достигнув впечатляющих результатов:
Федеральный эксперимент по интернатуре.
- Первый в России pet-friendly подход.
- Мегагрант и 12 грантов РНФ и РФФИ.
- 3 национальные премии «Золотой скальпель».
- 3 докторские и 6 кандидатских диссертаций, включая первую в ДГТУ, защищённую в Голландии.
- 2 стипендии Президента РФ и 3 полугодовые стажировки аспирантов за рубежом.
Но главное — это наша молодая, амбициозная команда специалистов ветеринарии, медицины, биологии и инженерии, которая воплощает междисциплинарные исследования в духе международной инициативы One Health — «Единое здоровье» во благо людей, животных и природы. 🌍
Спасибо всем, кто вносит вклад в развитие ветеринарии!
Желаем новых научных открытий, крепкого здоровья и вдохновения! 🩺
#ДеньВетеринара#ДГТУ#БиоВетМед#OneHealth