Можно ли в 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
🔤Углеводлар организмда ўзлаштирилишига қараб тез (содда молекулали) ва секин (мураккаб тузилишли) турларга бўлинади.
🧁Тез углеводлар, оддий углеводлар деб ҳам аталади, организмда жуда тез парчаланади ва тез сўрилади, қондаги қанд даражасини кескин оширади. Тез углеводларга мисоллар глюкоза, фруктоза, сахароза, малтоза ва лактозадир. Улар шакар, мураббо, асал, ширин мевалар (банан, узум, қовун), ширин ичимликлар ва турли пишириқларда кўп миқдорда учрайди (упаковкадаги кўп маҳсулотларда ҳам анчагина шакар бўлади).
🥦Мураккаб углеводлар деб ҳам аталадиган секин углеводлар секин сўрилади ва қондаги глюкоза даражасини аста-секин оширади. Секин углеводларга мисоллар клетчатка ва крахмал. Улар сабзавот, ширин бўлмаган мевалар, дуккаклилар, ёнғоқлар, уруғлар, бутун донли нон ва донларда кўп миқдорда сақланади.
🤒Кўп миқдорда тез углеводларни истеъмол қилиш қонда қанд ва инсулинни даражасини оширади, бу эса семириш, юрак касалликлари ва диабет ривожланиш хавфини ошириши мумкин. Шунинг учун ҳар хил турдаги углеводларни меёрида ва аралаш истеъмол қилишингиз керак.
🩺Doctor Ziyod | #nutrition#obesity
Latest Funding Rounds in AI and Tech
Recent funding highlights in AI and technology:
- Boon AI secured $15.50M on Dec 20, 2024. Learn more
- OpenLoop raised $15M on Dec 28, 2024. Learn more
- Emocog collected $14.98M on Dec 26, 2024, focusing on cognitive improvement digital therapeutics. Learn more
- Micro Optics raised $13.74M on Dec 13, 2024. Learn more
- Hengtuogao gathered $13.70M on Dec 30, 2024, specializing in integrated precision machinery. Learn more
- Tianhu Technology received $10M on Nov 15, 2024, as a leading AI protein design service in China. Learn more
- NitiNotes raised $9.30M on Dec 23, 2024, developing innovative treatments for obesity. Learn more
- WAJA secured $4.26M on Dec 31, 2024, focusing on regional economic development. Learn more
- Vetbiolix raised $4.23M on Dec 6, 2024, aiming at innovative pet health solutions. Learn more
- ChainOpera AI garnered $3.50M on Dec 26, 2024, working on blockchain solutions for decentralized AI apps. Learn more
These rounds highlight ongoing investment in AI, healthcare, pet care, and tech innovations.
#AI#Tech#Funding#Healthcare#Obesity#Decentralized#Blockchain#Innovation#CognitiveHealth#PetCare#Automation#ProteinDesign#DigitalTherapeutics#Economy#IndustrialSolutions#Hitech#Investment#Startup#VentureCapital#VC