Можно ли в 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
🌊 Стрелка Васильевского острова
Одно из самых узнаваемых и атмосферных мест Петербурга — величественные Ростральные колонны, простор Невы и ощущение города, раскрытого во всю ширь.
📷 Фото: natalia_krasnova_
#стрелкавасильевскогоострова
#васильевскийостров
#петербург#красотаспб
#прогулкиспб#видыспб
#spb_today#spbgram
#бесплатныесобытияспб
От закатов до спектаклей — рассказываем, где побывать. Куда сходить в Санкт-Петербурге — твой городской гид.
🥞 Масленица в Петропавловской крепости — уже совсем скоро!
Один из самых масштабных и ярких праздников зимы пройдёт в сердце Петербурга. Гостей ждут красочные фотозоны, спектакли, детский городок с играми и мастер-классами.
Главное угощение праздника — огромный розовый блинный пирог:
🥞 около 700 кг
🥞 почти 5 000 порций
Финалом станут праздничное шествие с гигантской Масленицей и зрелищный световой спектакль.
📍 Петропавловская крепость
🗓 21 февраля — 12:00–18:00
🗓 22 февраля — 12:00–19:00
🎟 Вход свободный
#масленицаспб#петропавловскаякрепость
#провожаемзиму#кудапойтиспб
#бесплатновспб#праздникспб
#семейныйдосуг#афишаспб
#spb_today#spbgram
Не знаешь, куда сходить? Мы знаем. Подписывайся на Куда сходить в Санкт-Петербурге.
🫶 Доходный дом Вавельберга
Один из самых эффектных и монументальных домов Петербурга — настоящий «палаццо» на Невском проспекте. Строгие линии, мощный камень и атмосфера северного модерна делают его особенно притягательным для прогулок и фотосессий.
#доходныйдомвавельберга
#архитектураспб#невскийпроспект
#петербург#красотаспб
#необычныедома
#прогулкиспб#spb_today
#spbgram
Где провести вечер? Что посмотреть? Все ответы — в Куда сходить в Санкт-Петербурге.
🐲 Китайский Новый год в Vokzal 1853
В фудмоле Vokzal 1853 пройдёт яркий и атмосферный праздник, посвящённый Китайскому Новому году. Гостей ждут мастер-классы, дегустации, игры и чайные церемонии — бесплатно и для всей семьи.
📍 Наб. Обводного канала, 118С
🗓 28 февраля
🎟 Вход свободный
#китайскийновыйгод#vokzal1853
#кудапойтиспб#бесплатновспб
#праздникспб#семейныйдосуг
#афишаспб#культураспб
#spb_today#spbgram
#гуляемпитер
Твоя ежедневная афиша: концерты, выставки, прогулки и не только — в Куда сходить в Санкт-Петербурге.
🥞 Провожаем зиму в Брусницыне
22 февраля на берегу Финского залива в квартале Брусницын пройдёт яркое и шумное масленичное гулянье — с играми, мастер-классами и блинами.
📍 Кожевенная линия, 30
🗓 22 февраля
⏰ 13:00–16:00
🎟 Вход свободный
Вас ждут интерактивные зоны для всех возрастов, красочные декорации, тематические фотозоны, мастер-классы и, конечно, блинное меню 🥞
В программе:
🌼13:00–15:30 — заезды и соревнования на ледянках, богатырские испытания, метание валенка, кольцеброс, битва богатырей и тир на удачу
🌼13:30–15:30 — мастер-классы по созданию мини-Маслениц и славянские гадания
🌼15:30 — выступление хора на главной площади
🌼16:00 — сожжение чучела Масленицы
#масленицаспб#брусницын
#провожаемзиму#кудапойтиспб
#бесплатновспб#праздникспб
#семейныйдосуг#зимавпитере
#spb_today#spbgram
Город оживает каждый день — подписывайся на Куда сходить в Санкт-Петербурге и не пропускай главное!
📖 Бесплатный вход в Музей Ф. М. Достоевского
9 февраля, в День памяти Фёдора Михайловича Достоевского, вход в музей будет бесплатным.
Посещение организовано по сеансам каждые 30 минут — с 11:00 до 17:00. Бесплатный билет на выбранный сеанс можно получить в кассе музея 9 февраля.
Гости смогут самостоятельно ознакомиться с литературной экспозицией
«Ф. М. Достоевский. Жизнь и творчество: Pro et Contra», временными выставками, а также принять участие в экскурсиях.
📍 Кузнечный переулок, 5/2
#достоевский#музейдостоевского
#бесплатновспб#кудапойтиспб
#литературавпитере#культураспб
#музеиспб#афишаспб
#spb_today#spbgram
#бесплатныесобытияспб
Город оживает каждый день — подписывайся на Куда сходить в Санкт-Петербурге и не пропускай главное!
😍 Бесплатно в Кунсткамеру? Легко!
Каждый третий четверг месяца в Музее антропологии и этнографии (Кунсткамере) проходит день открытых дверей.
📍 Университетская набережная, 3
🗓 Ближайший бесплатный день — 19 февраля
⏰ 10:00–18:00
Отличный повод увидеть одну из самых уникальных музейных коллекций страны — бесплатно и без повода ✨
#кунсткамера#музеиспб
#бесплатновспб#деньоткрытыхдверей
#кудапойтиспб#культураспб
#петербург#музейантропологии
#spb_today#spbgram
#гуляемпитер
Город оживает каждый день — подписывайся на Куда сходить в Санкт-Петербурге и не пропускай главное!
❄️ Зимний дворец
Зимний Петербург особенно величественен — строгая красота фасадов, морозный воздух и ощущение истории в каждом кадре.
📷 Фото: alex_masterhapkido
#зимнийдворец#эрмитаж
#зимнийпетербург#красотаспб
#петербург#видыспб
#архитектураспб
#spb_today#spbgram
#бесплатныесобытияспб
От закатов до спектаклей — рассказываем, где побывать. Куда сходить в Санкт-Петербурге — твой городской гид.
🎭 Бесплатный спектакль «Опасные связи»
Постановка студентов Института музыки, театра и хореографии РГПУ им. А. И. Герцена по пьесе Кристофера Хэмптона.
Классическая история интриг, страстей и манипуляций в исполнении молодых артистов — отличная возможность провести вечер в театре бесплатно.
📍 наб. реки Мойки, д. 48, Колонный зал
🗓 6 февраля
⏰ 18:00
➡️ вход с Казанской ул., д. 3
🎟 Вход свободный, по предварительной брони билетов
#бесплатныйспектакль#театрспб
#опасныесвязи#кудапойтиспб
#бесплатновспб#культураспб
#студенческийтеатр
#spb_today#spbgram
#гуляемпитер
От закатов до спектаклей — рассказываем, где побывать. Куда сходить в Санкт-Петербурге — твой городской гид.
🌳 Парк Ораниенбаум — бесплатно до апреля
Отличная новость для любителей прогулок и красивых пейзажей — вход в парк Ораниенбаум будет бесплатным до апреля.
Ораниенбаум — один из самых живописных и исторически значимых дворцово-парковых ансамблей на побережье Финского залива. Его по праву называют одной из главных жемчужин ожерелья летних резиденций, окружающих Северную столицу.
Идеальное место для неспешных прогулок, фотосессий и знакомства с историей Петербурга 🌿
📍 Дворцовый пр., 50
#ораниенбаум#паркиспб
#бесплатновспб#кудапойтиспб
#прогулкиспб#красивыеместаспб
#дворцовопарковыйансамбль
#петербург#гуляемпитер
#spb_today#spbgram
Живи активно: культура, еда, события — всё в одном месте. Куда сходить в Санкт-Петербурге.
🖼 Бесплатная выставка картин Владимира Бородина
В галерее «Тутти Кванти» представлены работы известного художника Владимира Бородина. В его живописи статика сочетается с мощной экспрессией, прозрачные акварельные тона — с плотными яркими мазками, чёткая графика линий — с образами, растворяющимися в цветном тумане.
Работы художника экспонировались на российских и международных выставках и находятся в коллекциях Фонда А. Хаммера и Пекинского национального музея искусств.
📍 ул. Радищева, 27
🎟 Вход свободный
🕒 пн–пт: 13:00–20:00
🕒 сб: 14:00–18:00
#бесплатнаявыставка#искусствоспб
#владимирбородин#живопись
#галереятуттикванти
#культураспб#кудапойтиспб
#бесплатновспб#петербург
#spb_today#spbgram
Где провести вечер? Что посмотреть? Все ответы — в Куда сходить в Санкт-Петербурге.
🎨 Бесплатная выставка акварелей Владимира Заруцкого
Художник-оформитель по образованию, Владимир Заруцкий называет себя живописцем. Его акварели — тонкие, деликатные и наполненные воздухом — передают динамику и настроение Петербурга, увиденного и запечатлённого с натуры. В таком городе хочется остаться.
📍 Галерея Тутти Кванти, ул. Радищева, 27
🕒 пн–пт: 13:00–20:00
🕒 сб: 14:00–18:00
🎟 Вход свободный
#бесплатнаявыставка#акварель
#владимирзаруцкий#искусствоспб
#галереятуттикванти
#культураспб#кудапойтиспб
#бесплатновспб#петербург
#spb_today#spbgram
От закатов до спектаклей — рассказываем, где побывать. Куда сходить в Санкт-Петербурге — твой городской гид.