Можно ли в 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
On this #WorldFoodDay, let's prioritize nutritious, balanced meals and make healthier food choices for a stronger, disease-free future.
Good nutrition is the foundation of good health. 💪
#HealthyEating#WorldFoodDay#NCDCNigeria
Healthy Planet, Healthy You!
❗️Informative signs on “General Rules and Environmental Protection: Healthy Eating Habits” have been placed around the campus by psychologist Muslima Nabijonova and tutor Shokhrukh Obidov — reminding everyone that caring for nature starts with caring for ourselves
#GreenUniversity#EcoLifestyle#HealthyEating#Sustainability
✉️[email protected]
☎️ +998 55 512 00 77
📍Location
🌐Website | 📱Telegram | 📱Instagram | 📱LinkedIn | 🟥YouTube
Black sapote is a fruit from Mexico and Central America. When unripe, it is hard and green. When ripe, the skin is olive-green, and the inside is soft, dark brown, and creamy like chocolate pudding. It tastes sweet and mild, like chocolate but has no bitterness or caffeine. People eat it as dessert or use it in smoothies and baking. 🍫🍃
[Source]
@googlefactss#BlackSapote#TropicalFruit#HealthyEating
Pink Pasta
🍝 Ingredients:
- 300 g pasta
🍄Sauce:
- 250 g cooked beetroot 🥗
- 100 g cashew nuts 🥜
- 50 ml water 💧
- 1 tbsp soy yogurt skyr 🥛
- 1 tsp oil 🫒
- 1 tsp agave syrup 🍯
- 1 tsp salt 🧂
- 1 tsp pepper 🌶️
- 1 tsp vegetable broth 🍲
Preparation:
1. 🥄 Soak the cashews in warm water for 10 minutes, then drain. Meanwhile, cook the pasta 🍲.
2. 🥢 Dice the beetroot and blend it with the other sauce ingredients until smooth.
3. 🍳 Crumble the tofu and sauté in oil, then add the beetroot and chickpeas. Fry until golden.
4. 🍝 Mix the pasta with the sauce, add your favorite toppings, and enjoy!
#PinkPasta#VeganRecipe#HealthyEating
@dishes
High Protein Wan Tan
Ingredients:
For the dough:
- 250 g flour 🌾
- 1 tsp salt 🧂
- 100 ml warm water 💧
For the filling:
- 1 cm ginger 🫚
- 100 g soy granules 🌱
- 2 spring onions 🧅
- 2 cloves of garlic 🧄
- 3 mushrooms 🍄
- 1 carrot 🥕
- 4 tbsp soy sauce 🧴
- 1 tbsp starch 🌿
Additionally:
- oil for frying 🛢️
- 100 ml water for steaming 💦
#HighProtein#WanTan#HealthyEating#Vegan
@dishes
Jellyfish have been eaten in Asia for centuries. People eat them in China, Japan, and Southeast Asia. They are processed with salt and alum to remove water and make them crunchy. Only certain species are safe to eat. Jellyfish are low in calories and high in protein. The processing tightens proteins, giving them a firm, crunchy texture. They are often served in salads, cold dishes, or as a crunchy snack.
🦑🥗🍴
[Read more]
@googlefactss
#JellyfishFood#AsianCuisine#SeafoodFacts#HealthyEating#FoodHistory
To ripen avocados fast, put them in a brown paper bag with an apple or banana. These fruits release a gas called ethylene that helps avocados ripen quicker, usually in 1 to 3 days. Keep the bag at room temperature and check daily. Avoid the fridge until they are ripe, or they won’t ripen properly. 🥑🍌🍎@googlefactss
#AvocadoRipening#FastRipen#KitchenTips#FruitRipening#HealthyEating
Cold weather and frost make many vegetables sweeter by increasing their sugar. Collards survive down to -9°C (15°F), beets down to -7°C (20°F), and both grow well if planted in late summer. Frost may damage some leaves but helps roots taste better.
Cover plants with row covers if it gets colder than -7°C (20°F) to protect them.
🌿❄️
@googlefactss
#WinterVeggies#FrostSweetened#ColdHardy#GardeningTips#HealthyEating
High Protein Vegetable Patties
🥕 Ingredients:
- 1 small carrot 🥕
- 1 medium potato 🥔
- 1/2 bell pepper 🌶
- 1 onion 🧅
- 50 g soy granules 🌱
- 50 g corn 🌽
- 50 ml water 💧
- 100 g flour 🌾
- 1 tbsp starch ✨
- Oil for frying 🍳
Preparation:
1️⃣ Grate the carrot & potato, dice the pepper & onion, and place in a bowl 🥣
2️⃣ Soak the soybean granules in water, then add to the bowl along with the remaining ingredients and mix well 👩🍳
3️⃣ Shape the dough into patties and sauté in a pan with a little oil until golden brown 🥘
Enjoy! 😋
#HighProtein#VegetablePatties#VeganRecipe#HealthyEating#PlantBased
@dishes
High Protein Vegetable Patties
🥕 Ingredients:
- 1 small carrot 🥕
- 1 medium potato 🥔
- 1/2 bell pepper 🌶️
- 1 onion 🧅
- 50 g soy granules 🌱
- 50 g corn 🌽
- 50 ml water 💧
- 100 g flour 🌾
- 1 tbsp starch ✨
- Oil for frying 🍳
Preparation:
1️⃣ Grate the carrot & potato, dice the pepper & onion, and place in a bowl 🥣
2️⃣ Soak the soybean granules in water, then add to the bowl along with the remaining ingredients and mix well 👩🍳
3️⃣ Shape the dough into patties and sauté in a pan with a little oil until golden brown 🥘
Enjoy! 😋
#HighProtein#VegetablePatties#VeganRecipe#HealthyEating#PlantBased
@dishes
🥞High Protein Cereal Pancakes 🥞
Ingredients:
🌾 160g flour
🥛 360 ml almond drink
💪 1 tbsp protein powder (optional)
✨ 1 tsp baking powder
🍯 1 tbsp agave syrup
🍏 2 tbsp apple cider vinegar
Toppings:
🥝 5 mini kiwis
🥥 200 ml plant-based drink
🌴 1 tsp date syrup
🍒 Pomegranate seeds
Preparation:
1️⃣ Mix all ingredients for the pancakes.
2️⃣ Fry a thumb-sized portion of dough over medium heat with a little oil.
3️⃣ Enjoy with your delicious toppings! 😋
---
#HealthyEating#HighProteinPancakes#VeganBreakfast#PancakeLovers@dishes
@dishes