Можно ли в 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
До #WOOFFEST остаются считанные дни! И сейчас самое время приложить все усилия и рассказать о данном мероприятии, как можно большему количеству людей и ваших друзей💪
Уже в эту субботу и воскресенье 300 собак и кошек из приютов соберутся на территории Хлебозавода №9, чтобы испытать удачу и попробовать обрести долгожданную семью. Наши подопечные Лакоста, Кензо, Том и Утешка уже вовсю готовятся и «чистят перышки».
Мы составили список топ-3 действий, которые вы можете сделать, чтобы помочь хвостикам найти любящих хозяев:
Разместить репост/пост записи главного анонса мероприятия;
Сделать e-mail рассылку по друзьям и коллегам или разместить анонс в рабочем чате;
Предложить друзьям закупить подарки для приютских хвостиков в течение этой недели и привезти их на фестиваль! Все эти действия помогут собакам и кошкам из приютов стать домашними!
Давайте постараемся и сделаем так, чтобы как можно больше животных разъехались по своим домам!
С животными-участниками можно познакомиться по ссылке: https://wooffest.ru
📍 Ждём вас 26 и 27 апреля по адресу: культурный центр «Хлебозавод №9», Новодмитровская улица, 1, стр. 17 (м. Дмитровская)
#WOOFFEST#WOOFFEST12
[WOOF Москва: 26 и 27 апреля]
‼️ Друзья, уже в эту субботу‼️
Выставка-пристройство WOOF !!!
От нашего приюта выбраны сразу 4(!) кандидата, кто поедет на этот фестиваль в надежде обрести там свою семью🙏
📅 Когда?
26 апреля – День собак (11:00–19:00)
27 апреля – День кошек (11:00–19:00)
📍 Где?
Москва, Хлебзавод, Новодмитровская улица, 1 стр 17, «Бойлерная»
Вход свободный, pet-friendly, 0+
До встречи на Хлебозаводе!
https://t.me/woof_fest
#WOOFFEST#WOOFFEST12
На фестиваль @woof_fest можно прийти даже без планов взять питомца домой — но всё равно сделать доброе дело 🧡
🐾 В дни фестиваля будет работать пункт сбора помощи для приютов Москвы и области. Всё, что так необходимо хвостикам каждый день — корм, лекарства, поводки, пелёнки — можно принести прямо на площадку. Мы передадим всё участникам фестиваля, чтобы их подопечные были сытыми, здоровыми и окружёнными заботой.
🎁 Что особенно нужно приютам:
• Сухой и влажный корм для собак и кошек (в том числе лечебный)
• Амуниция: поводки, ошейники, шлейки
• Капли от блох и клещей
• Глистогонные препараты (Празител, Мильбемакс и др.)
• Пелёнки (размер 60×60 и 60×90 см)
• Металлические миски
• Наполнители для лотков
✨ Каждый пакет с кормом — это не просто помощь. Это поддержка для тех, кто всё ещё ждёт своего человека.
📅 26 апреля — День собак
📅 27 апреля — День кошек
📍 Москва, Хлебозавод, ул. Новодмитровская, 1
🕚 11:00–19:00
Вход свободный | 0+ | PET-FRIENDLY
Приходите обнимать, помогать, знакомиться и просто провести день в атмосфере доброты.
WOOF Москва: 26 и 27 апреля
https://t.me/woof_fest
#WOOFFEST#WOOFFEST12
🐾 Фестиваль WOOF возвращается! Уже в 12-й раз мы собираемся вместе, чтобы сделать мир чуточку добрее — для тех, кто не умеет говорить, но умеет любить всем сердцем.
💛 WOOF — это не просто фестиваль. Это два дня, когда 300 собак и кошек из приютов приезжают в надежде найти своих людей. Они прошли долгий путь, чтобы дождаться именно вас. Все хвостики здоровы, привиты, стерилизованы и готовы к новой жизни — в семье.
🐶 Вас ждёт:
— Уютная атмосфера, в которой можно выбрать друга на всю жизнь
— Благотворительный маркет с классными товарами
— Фотозоны, розыгрыши и подарки от наших партнёров
— Детская зона с мастер-классами и викторинами
— Консультации специалистов
— Пункт сбора помощи для приютов (приносите корм, медикаменты, пелёнки, амуницию и просто частичку тепла — мы всё передадим в добрые лапы)
✨ За 11 фестивалей WOOF в Москве уже 1335 животных нашли дом. Давайте вместе подарим шанс ещё сотням хвостатых — ведь каждый из них мечтает услышать простые слова: «Пойдем домой».
Если вы готовы забрать питомца — берите паспорт. Передача по договору ответственного содержания.
Даже если вы не можете взять домой пушистого друга — приходите, обнимите хвостатых, поддержите приюты и зарядитесь добром.
Потому что WOOF — это про любовь.
📅 Когда?
26 апреля – День собак (11:00–19:00)
27 апреля – День кошек (11:00–19:00)
📍 Где?
Москва, Хлебзавод, Новодмитровская улица, 1 стр 17, «Бойлерная»
Вход свободный, pet-friendly, 0+
До встречи на Хлебозаводе!
https://t.me/woof_fest
#WOOFFEST#WOOFFEST12
Долгожданный день #WOOF настал!!!
День был очень долгим)).
Мы от всей души хотим поблагодарить организаторов- Фонд помощи бездомным животным "Ника" за ежегодное проведение этого чудесного фестиваля, помогающего обрести десяткам собак свои новые семьи🙏.
А так же за ту атмосферу, которую организаторам удается создавать во время этого фестиваля👍.
Немного этой атмосферы- как раз в этой карусели 👆.
Ну а по результатам- результатами будем делиться с Вами завтра🙂
https://t.me/woof_fest
#WOOFFEST#WOOFFEST12
Подготовка в СЕГОДНЯШНЕМУ фестивалю #WOOFFEST !
Эту ночь все наши 4 кандидата провели дома у волонтеров).
Все намылись, все блестящие, все теперь ромашками пахнут).
Также это своеобразная проверка на то, как собака поведет себя дома.
Все дома вели себя идеально))).
Все готовы к встрече со своими новыми родителями!
Пожелайте им удачи, пожалуйста!
Она им сегодня очень понадобится!
Чтобы никому из них не пришлось бы возвращаться в приют после выставки...
Ведь это всегда самая печальная часть любого фестиваля- пристройства...
Провести целый день в окружении огромного числа людей, быть окруженным таким вниманием... А потом в приют(((.
Пусть сегодня такого не случится 🙏
Совсем скоро мы выезжаем!
До встречи на #WOOF !
📅 Когда?
СЕГОДНЯ, 26 апреля, с 11:00 до 19:00
📍 Где?
Москва, Хлебзавод, Новодмитровская улица, 1 стр 17, «Бойлерная»
Вход свободный, pet-friendly, 0+
До встречи на Хлебозаводе!
https://t.me/woof_fest
#WOOFFEST#WOOFFEST12
‼️ФЕСТИВАЛЬ #WOOF УЖЕ В ЭТУ СУББОТУ‼️
И четвертый кандидат от нашего приюта, отобранный организаторами для участия в этой выставке-пристройстве- наш Мальчик Том❤️.
И на эту выставку он поедет с одной лишь мечтой- встретить своих новых родителей и поехать оттуда не назад в приютский вольер, а ДОМОЙ🙏
До встречи в субботу!
Он Вас будет очень ждать!!
И пожелайте удачи нашему Вилли🙏
📅 Когда?
26 апреля – День собак (11:00–19:00)
27 апреля – День кошек (11:00–19:00)
📍 Где?
Москва, Хлебзавод, Новодмитровская улица, 1 стр 17, «Бойлерная»
Вход свободный, pet-friendly, 0+
До встречи на Хлебозаводе!
https://t.me/woof_fest
#WOOFFEST#WOOFFEST12
‼️ ДРУЗЬЯ, ДО ВЫСТАВКИ-ПРИСТРОЙСТВА #WOOF ОСТАЮТСЯ БУКВАЛЬНО СЧИТАННЫЕ ДНИ‼️
❌УЖЕ В ЭТУ СУББОТУ❌
И мы представляем третьего участника (точнее, участницу🙂) от нашего приюта, которая поедет на этот фестиваль в надежде уехать оттуда ДОМОЙ🙏.
Наша прелестная малышка Кензо😍
Очень, очень милая девочка-подросток❤️.
Фактически, еще щенок.
Малышка, у которой еще вся жизнь впереди!
И так хотелось бы, чтобы она проходила не в стенах приюта, а на мягком диванчике, рядышком с хозяином).
Обязательно приезжайте сами и расскажите своим знакомым!
Она Вас будет очень ждать!!
📅 Когда?
26 апреля – День собак (11:00–19:00)
27 апреля – День кошек (11:00–19:00)
📍 Где?
Москва, Хлебзавод, Новодмитровская улица, 1 стр 17, «Бойлерная»
Вход свободный, pet-friendly, 0+
До встречи на Хлебозаводе!
https://t.me/woof_fest
#WOOFFEST#WOOFFEST12
‼️ Друзья, уже совсем скоро!!!
Уже в эту субботу‼️
Выставка-пристройство WOOF !!!
От нашего приюта выбраны сразу 4(!) кандидата, кто поедет на этот фестиваль в надежде обрести там свою семью🙏
Представляем Вам нашего второго участника- милейшую Утешку❤️.
Идеальная собака компаньон с идеальным характером❤️. Просто чудо, а не собака!
И мы очень надеемся, что на фестивале #WOOF ребенок встретит свое счастье!
Обязательно приезжайте сами и расскажите своим знакомым!
Она Вас будет очень ждать!!
📅 Когда?
26 апреля – День собак (11:00–19:00)
27 апреля – День кошек (11:00–19:00)
📍 Где?
Москва, Хлебзавод, Новодмитровская улица, 1 стр 17, «Бойлерная»
Вход свободный, pet-friendly, 0+
До встречи на Хлебозаводе!
WOOF Москва: 26 и 27 апреля
#WOOFFEST#WOOFFEST12