Можно ли в 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
Mission!! (Кива Ириэ)
Возвращаясь к новым интересным сериям манги, которые я читаю. Раз уж я недавно получила водительские права спустя год обучения (специально брала максимальные часы практики, так как я была ноль и учить меня больше некому), расскажу про актуальное.
«Mission!!» – манга Кивы Ириэ, дзёсэй-мангаки, в Японии известной своими историями о взрослых женщинах и о том, что же там после пенсии и в почтенном возрасте. Собственно, это причина, по которой за пределами Японии мангака уже известна не так хорошо и переводов ее манги (любительских и официальных) практически и нет.
Мити 54 года. На первый взгляд все в ее жизни хорошо. Как среднестатистическая женщина в глазах общества она «состоялась»: у нее сын-студент, любящий муж и бизнес – книжный магазинчик, доставшийся ей от родителей. Но, конечно, это лишь фасад. У Мити почти нет времени на себя. С утра до вечера она занята работой магазина, домом и уходом за старенькой мамой, которая то и дело устраивает ссоры и ведет себя как ребенок. Жизнь проходит в постоянном напряжении. Сын не помогает с хозяйством и почти с ней не разговаривает, а муж вроде как нашел себе другую женщину на стороне, но это не точно. И вот так, вроде окруженная семьей, Мити чувствует себя устало и одиноко. Она постоянно воюет со старушкой-мамой, которая отказывается идти к врачу. Вспоминает о том, как ее семья избаловала мужа еще в молодости, позволяя ему не особо напрягаться домашними делами и работой. А еще как она решила взяться за семейный книжный магазин после смерти папы.
Но однажды в магазинчик Мити приходит экстравагантная клиентка – высокая женщина в очень броской одежде, причем примерно возраста героини. Мити замечает на улице машину женщины – элегантную и красивую. Ее настолько впечатляет эта дама за рулем и то, как она выглядела, что Мити начинает думать о том, что хотела бы открыть для себя что-то новое в жизни. Почему бы не научиться водить машину? Это помогло бы ей в работе с развозкой заказов из магазина. Да и ощущение, что с машиной она будто бы станет свободнее, ее радует. И вот, собравшись духом, героиня сообщает домочадцам о своем намерении учиться в автошколе.
А дальше начинается тяжелая учеба, во время которой Мити еще будет сомневаться в выборе, пугаться инструкторов (оказывается, в Японии тебе дают возможность ездить с самыми разными каждое занятие), столкнется с предвзятым мнением о своих способностях, а в итоге встретит в автошколе ту самую прекрасную даму! Которая, по иронии судьбы, сама работает в автошколе инструктором…
Очень жизненная и интересная манга. Не припомню больше таких детальных работ об обучении вождению взрослой женщины. И читая мангу думаешь невольно: да! Похожее во время учебы было и у меня! Жаль, только работа пока без перевода и доступна только на японском. Буду с удовольствием дальше читать ^^
#2020е@shoujo_josei
Чудесные обложки манги hara "Okashi no ie no madam-san" ("Мадам из домика сладостей") о дружбе харизматичной женщины в возрасте, торгующей сладостями, и полной закомплексованной девушки.
☂️ Как-то писала об этой манге здесь.
#2020е@shoujo_josei
Копаюсь в новеньком для себя. Находки на познакомиться поближе.
Фукамати Аои - новая многообещающая звездочка седзе-манги. Рисует для "Lala", а прославилась своими ваншотами. Мангака родилась в 1999, обожает Достоевского и "Братьев Карамазовых".
🌟 Один из известных ваншотов - "Yane no ue no haitatsunin" (Курьер на крыше). Увы, пока без какого-либо перевода.
19-й век, Лондон. Героиня Лиз работает курьером на знатный дом и доставляет письма так, будто это спецзадания. Прыгает по крышам, превращая доставку писем в экшн. Однажды Лиз невольно втягивает в неприятности студента Джесса. Тот начинает учить её читать, и Лиз впервые в жизни чувствует тягу к обретению знаний. Но тут выясняется неприятное обстоятельство: умение читать мешает её работе, потому что профессия девушки связана с секретными письмами, понимать которые "опасно" для жизни.
🌟"Nazotoki gakusha to hinekure tenshi" (Академия загадок и вредный ангел) - одна из последних работ мангаки, где тоже видна некоторая тяга к европейскому сеттингу, пусть на этот раз персонажи и японцы.
В частной школе, построенной на базе готического особняка начала XX века, новенькая ученица Юдзуки в первый же день учебы теряется в лабиринтах учебного заведения и встречает "ангела" из школьных слухов — главного местного красавчика. Но бисенэн, как оказалось, не особо соответствует тому, что о нем навоображали девочки. Он грубоватый и ленивый, да и вообще, как выяснилось, остался в академии на второй год. Зато он обладает наблюдательностью и хорошей логикой, что помогает в детективных расследованиях Юдзуки, которой в школе нужно найти кое-что важное...
#2020е@shoujo_josei#Lala@shoujo_josei
Думаю, многие слышали про замечательную мангу "Toripan"("Птичий хлеб") о наблюдении за птицами (и не только). Если ещё не слышали, то от души советую почитать - фанаты переводят ее на русский.
Я относительно недавно тоже увлеклась птицами, поэтому манга о них меня очень интересует. Набрела на "Mainichi tori biyori" от Тобиты Хадзимэ. Выходит манга в онлайн-дзесэй журнале "Comic polaris" и ее пока что можно там читать бесплатно (на японском): https://comic-polaris.jp/toribiyori/
Каждая глава - короткая манга о наблюдении мангаки за той или иной птицей. Сопровождается небольшими энциклопедическими заметками. Очень интересно. В общем, советую всем поклонникам добуцу-манги и эссе-манги. Красота.
#2020е#Polaris
Новость-молния, которая точно войдет в историю седзе.
Впервые за22 года журнал "Ribon" смог обойти по продажам своего "соперника" - "Ciao", который все это время занимал первое место по тиражу и продажам.
То, что "Рибон" вырвался вперед, японские исследователи заметили еще летом, но теперь вот все вполне официально. На обложке свежего номера за январь значится, что "Рибон - седзе-журнал номер 1!".
Припоминаю то время, когда "Рибон" считался "библией 2,5 миллиона девочек" в конце 1980-х. Сейчас, конечно, охват не такой, но все равно приятно. Интересно, связано ли увеличение продаж и тиражей с тем, что спустя много лет снова выходят аниме-экранизации манги из журнала? Сейчас идет экранизация "Acro trip", очень хорошая. Ждем январь и выход аниме по самой популярной манге современного "Рибон" - "Honey lemon soda". Сегодня как раз в сети новая иллюстрация к грядущей экранизации появилась.
#Ribon#2020е#журналы@shoujo_josei