Можно ли в 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
ФУТБОЛКА «СКОРОСТЬ ДРИФТА» | ОФИЦИАЛЬНЫЙ МЕРЧ | ZENLESS ZONE ZERO
⚡️Детали:
⭐ Релиз в КОНЦЕ МАЯ 2026
⭐Размеры: XS-XL
⭐Материал: 85% хлопок, 15% полиэстер
⭐ Всего 2 цвета на выбор: коричневый, черный
⭐ Больше фото и таблицы: тык
💱Цены: 4700 🪙 (рублей)
👻Доставка:
🅰️Цена указана С УЧЕТОМ доставки ДО РФ
✉️Обратная связь:
⁉️Вопросы о доставке, оплате и тд.
👀Отзывы
💱Купить:
🅰️@astroknight_bot
🅰️ С реальными менеджерами
🅰️ Товар на сайте: тык
#ZZZ@astroknightshop
БЕЙСБОЛКА «СКОРОСТЬ ДРИФТА» | ОФИЦИАЛЬНЫЙ МЕРЧ | ZENLESS ZONE ZERO
⚡️Детали:
⭐ Релиз в КОНЦЕ МАЯ 2026
⭐Размеры: мужская 49-62 см; женская 47-60 см
⭐Материал: 100% полиэфирное волокно; подкладка козырька - 100% хлопок
⭐ Всего 5 видов на выбор: черная мужская с квадратными полями, черная женская с закругленными полями и круглым верхом, коричневая мужская с квадратными полями, коричневая женская с закругленными полями и круглым верхом, черная мужская с плоским козырьком и квадратным верхом
⭐ Больше фото и таблицы: тык
💱Цены: 3450 🪙 (рублей)
👻Доставка:
🅰️Цена указана С УЧЕТОМ доставки ДО РФ
✉️Обратная связь:
⁉️Вопросы о доставке, оплате и тд.
👀Отзывы
💱Купить:
🅰️@astroknight_bot
🅰️ С реальными менеджерами
🅰️ Товар на сайте: тык
#ZZZ@astroknightshop
ПЛЮШЕВАЯ ИГРУШКА-ПОДУШКА В ВИДЕ ОСЬМИНОГА АНГЕЛОВ НАВАЖДЕНИЯ | ОФИЦИАЛЬНЫЙ МЕРЧ | ZENLESS ZONE ZERO
⚡️Детали:
⭐ Релиз в КОНЦЕ СЕНТЯБРЯ 2026
⭐Материал: 100% полиэфирное волокно
⭐Размер: 40 см
💱Цены: 5550 🪙 (рублей)
👻Доставка:
🅰️Цена указана С УЧЕТОМ доставки ДО РФ
✉️Обратная связь:
⁉️Вопросы о доставке, оплате и тд.
👀Отзывы
💱Купить:
🅰️@astroknight_bot
🅰️ С реальными менеджерами
🅰️ Товар на сайте: тык
#ZZZ@astroknightshop
ПЛЮШЕВАЯ ИГРУШКА-ПОДУШКА В ВИДЕ БАНБУ АНГЕЛОВ НАВАЖДЕНИЯ | ОФИЦИАЛЬНЫЙ МЕРЧ | ZENLESS ZONE ZERO
⚡️Детали:
⭐ Релиз в КОНЦЕ СЕНТЯБРЯ 2026
⭐Материал: 100% полиэстер; наполнитель - 87% полиэстер, 13% полипропилен
⭐Размер: 40 см
💱Цены: 5550 🪙 (рублей)
👻Доставка:
🅰️Цена указана С УЧЕТОМ доставки ДО РФ
✉️Обратная связь:
⁉️Вопросы о доставке, оплате и тд.
👀Отзывы
💱Купить:
🅰️@astroknight_bot
🅰️ С реальными менеджерами
🅰️ Товар на сайте: тык
#ZZZ@astroknightshop
КРЕПЯЩИЙСЯ СВЕТИЛЬНИК-ВЫВЕСКА | ОФИЦИАЛЬНЫЙ МЕРЧ | ZENLESS ZONE ZERO
⚡️Детали:
⭐ Релиз в КОНЦЕИЮЛЯ2026
⭐Размер: 46х40х17 мм
⭐ Всего 3 стиля на выбор: магазин Yum Cha Sin, минимаркет 141, San-Z-студия
💱Цена: 1400 🪙 (рублей)
👻Доставка:
🅰️Цена указана С УЧЕТОМ доставки ДО РФ
✉️Обратная связь:
⁉️Вопросы о доставке, оплате и тд.
👀Отзывы
💱Купить:
🅰️@astroknight_bot
🅰️ С реальными менеджерами
🅰️ Товар на сайте: тык
#ZZZ@astroknightshop
МЕТАЛЛИЧЕСКИЕ ПИНЫ С ФРАКЦИЯМИ VOL.4 | ОФИЦИАЛЬНЫЙ МЕРЧ | ZENLESS ZONE ZERO
⚡️Детали:
⭐ Релиз в КОНЦЕИЮЛЯ2026
⭐Размер: Школа горы Юнькуй - 52х38 мм; Хижина Кошмаров - 52х53 мм; Надзорная служба Крампус - 53,5х49 мм
⭐ Vol. 1 - тут
⭐ Vol. 2 - тут
⭐ Vol. 3 - тут
⭐ Всего 3 стиля на выбор
💱Цена: 1100 🪙 (рублей)
👻Доставка:
🅰️Цена указана С УЧЕТОМ доставки ДО РФ
✉️Обратная связь:
⁉️Вопросы о доставке, оплате и тд.
👀Отзывы
💱Купить:
🅰️@astroknight_bot
🅰️ С реальными менеджерами
🅰️ Товар на сайте: тык
#ZZZ@astroknightshop
БЫСТРОЗАРЯЖАЕМЫЙ ПОРТАТИВНЫЙ АККУМУЛЯТОР С РАСШИРЯЕМОЙ ЕМКОСТЬЮ | ОФИЦИАЛЬНЫЙ МЕРЧ | ZENLESS ZONE ZERO
⚡️Детали:
⭐ Релиз в КОНЦЕ МАЯ 2026
⭐Размер: полный комплект 80,4х28х116 мм; зарядный модуль 80,4х28х66,5 мм; модуль расширения 80,4х28х43,6 мм
⭐ Материал: огнестойкий пластик
⭐Номинальная емкость: 8400 мАч (5В-3А)
⭐Максимальная мощность зарядки: 22,5 Вт
⭐ Технические характеристики: Вход USB-C: 5В-3А, 9В-2А, 12В-1,5А, макс. мощность 18 Вт; Выход USB-C: 5В-3А, 9В-2,22А, 10В-2,25А, 12В-1,67А, макс. мощность 22,5 Вт
⭐Всего 2 цвета (емкость 10000 мАч) на выбор: серый и черный
⭐Всего 2 цвета (емкость 5000 мАч) на выбор: серый и оранжевый
⭐Всего 4 цвета (емкость 10000 мАч + 5000 мАч) на выбор: черно-оранжевый, черно-серый, серо-оранжевый и двойной серый
⭐ В подарок к комплекту аккумуляторов идет сумка для хранения
⭐ Присутствует китайская сертификация ССС
⭐ Детали: тык
💱Цены:
➖ Емкость 5000 мАч 3550 🪙 (рублей)
➖ Емкость 10000 мАч 6200 🪙 (рублей)
➖ Емкость 10000 мАч + 5000 мАч 8700 🪙 (рублей)
👻Доставка:
🅰️Цена указана С УЧЕТОМ доставки ДО РФ
✉️Обратная связь:
⁉️Вопросы о доставке, оплате и тд.
👀Отзывы
💱Купить:
🅰️@astroknight_bot
🅰️С реальными менеджерами
#ZZZ@astroknightshop
УДЛИНЯЕМЫЙ КАБЕЛЬ ДЛЯ БЫСТРОЙ ЗАРЯДКИ И ПЕРЕДАЧИ ДАННЫХ | ОФИЦИАЛЬНЫЙ МЕРЧ | ZENLESS ZONE ZERO
⚡️Детали:
⭐ Релиз в КОНЦЕ МАЯ 2026
⭐Размер: короткий - 18 см; длинный - 1 м
⭐Питание: Type-C, макс. мощность 240 Вт
⭐ Технические характеристики: Type-C-Type-C; Рабочее напряжение от -5В до 48В; Макс. ток - 5В; Скорость передачи данных - -= 480 Мбит/с
⭐Всего 2 цвета на выбор: оранжевый и черный
⭐ Детали: тык
💱Цены:
➖ Кабель 18 см 1900 🪙 (рублей)
➖ Кабель 1 м 2800 🪙 (рублей)
➖ Кабель 18 см + 1 м 3850 🪙 (рублей)
👻Доставка:
🅰️Цена указана С УЧЕТОМ доставки ДО РФ
✉️Обратная связь:
⁉️Вопросы о доставке, оплате и тд.
👀Отзывы
💱Купить:
🅰️@astroknight_bot
🅰️С реальными менеджерами
#ZZZ@astroknightshop