Можно ли в 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
Когда вы занимались/слушали музыку, у вас возникало желание увидеть ее автора вживую?
У меня, да.
Таких людей— композиторов, немного, и они есть среди нас, их стоит замечать.
Спасибо большое, за возможность съемки, композитору — Настасье Хрущевой (inst: @nastasiakhrushcheva)
Она замечательный человек, который пишет глубокую музыку. Обязательно познакомьтесь с её творчеством, потому что такие люди — редкость.
#photosession
Ксюша❤️, Парк Победы
Первая съёмка уже в новом учебном году. Хочется снимать больше и успевать столько же, но всему рамки задаёт учеба. Да, этот факт воспринимается грустно, но про образование всё же не стоит забывать...
Будут съёмки, будут новые карусели с фотографиями, постараюсь ввести и новый формат, а именно мысли и рассуждения о фотографии и композиции, а иногда будут и простые рассказы о том, как было весело/круто снимать ту или иную съёмку.
В общем и целом, ждите нового)))
#photosession
Атланты (Part 2)
Также, хочу сказать, что параллельно я выкладываю свои серии
в inst: @andrew_incp
на Behance: Andrew Kalugin
Обязательно подписывайтесь, если ещё не подписаны, буду Вам благодарен)❤️
#photosession
Атланты — это про волю к жизни
(Part 1)
Новая съёмка, я жив!
Если хочешь чего-то добиться, то придется каждодневно стараться и преодолевать себя— этот закон действует в любом деле.
Порой дисциплина важнее наличия мотивации, вдохновения, тогда воля к жизни пронизывает всё твоё сознание.
Снимали рано утром, в Петербурге, у Атлантов около Дворцовой площади.
Ни разу не пожалел, что встал так рано (или что не засыпал)😄
Огромная благодарность Ване, за эту съёмку!
#photosession
«Красота— часть нашего мира»
Её нужно только увидеть, заметить. Наша жизнь наполнена красотой, которая есть в каждом человеке.
Увидеть в другом красоту— значит увидеть её и внутри себя.
loc: Особняк Слепцова
Md: Спасибо Екатерине (@assolka_kate), за эту фотосессию🥳
#photosession
Исаакий, зима, мороз - всё это прекрасно своей сказочностью... А лаконичность рождает ощущение светлой радости, той радости, что сопровождает нас всё время предрожственнских вечеров.
А, вообще спонтанные фотосессии— это прекрасно.
спасибо Насте(@re9gent) 🥳!
#photosession
Наши эмоции — это наш способ общения. Порой, они говорят о нас больше, чем мы сами можем о себе сказать.
Язык эмоций — это безусловное выражение искренности в той форме, которая оказывается для настоящего общения людей необходимой.
Дилемма в том, что человеку оставлен выбор — проживать эмоции или отвергнуть их, оставаясь в узких рамках самого себя.
Новая фотосессия🥳! Спасибо, Ксюше (@ksu_reg) за участие💓
#photosession
«Самое безнадежное дело на свете — пытаться точно определить характер человека. Каждая личность — это клубок противоречий, а тем более личность одаренная»
Т. Драйзер «Финансист»
Задумчивость и глубина— качества человека мыслящего. Погружение в себя, поиск ответов на внутренние вопросы я постарался передать здесь, в этом фотосете.
Во всяком случае, быть на распутье, сомневаться и размышлять лучше, чем стоять на месте или плыть по течению.
(Part 1)
#photosession
Добрый вечер, дорогие друзья!
Не часто я обращаюсь к Вам вот так, в текстовом виде, но сегодня очень хороший повод. Вас уже больше 100!🎉🎉🎉
Я искренне рад каждому подписчику. Спасибо Вам за каждую реакцию, комментарий, репост, просмотр — всё это помогает мне, а иногда мотивирует и поддерживает. Я хочу продолжать дальше что-то снимать, изучать новое и делиться этим с Вами!♥️
В связи с этим, на канале появится новая рубрика (#photosession). В ней будут исключительно фотосеты с людьми— портерные и творческие и всякие разные ...) 🎉
Абсолютно любой может в этом поучаствовать, достаточно просто написать мне (@andrteol), я всегда открыт к таким предложениям и естественно я только начинаю развиваться в этом направлении и на таком пути есть свои взлеты и падения.
Спасибо Вам, каждого ценю и уважаю!☺️
Доброе -доброе …утро ..☀️🤍🪽
Моё лицо южного типа выражает Вам сегодня необычайное сочетание счастья и любви ;взгляд путницы ,способной передать такие пронзительные чувства ,словно лучи ,направленные каждому ,кто читает эти строки ,которые имеют свойство сегодня озарить самую душу собеседника,сочитательника ,единомышленника…💫Пусть сегодня единственном источником симпатии будут Ваши..Наши..глаза..🫶🏻
#lovevibes by
Photo @linalinaliali
Muah @karelinamakeup
Style @svetaiver
#мира#доброеутро#goodvibes#goodmorning#moodoftheday#sun#autumn #2024 #photooftheday#photography#mira#heavenonearth#femme#women#energy#purelove#planetearth#mothernature#actress#actrice#model#haveaniceday#всемхорошихвыходных#гастроли#summervibes#photosession#blackandwhite#blackandwhitephotography
Man!I feel like a Woman!😜
Доброе утро ☀️Девочки!Ловите настроение❤️🔥
Мужчины,удачи😂Сегодня грядёт аномальная жара😂
Фотокарточка от @p.pollyyyyyyyyyy
Стиль и шик от @pppppppppp.ssssssssss
Роскошность от @villlllss
Угодья от @villa_rossa_s
#autumn #2024 #mood#moodoftheday#goodmorning#positivevibes#доброеутро#всемотличногонастроения#purelove#villa#photooftheday#photography#women#womenfashion#manifeellikeawoman#legs#femme#mira#actress#actrice#sun#chique#heavenonearth#photosession#фотосессия#haveaniceday#streetphotography