Можно ли в 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
Убирайтесь из моего дома, жадные королевские выродки! Эта квартира не отойдет Британской короне!».
Забавная пародия на «Квартирный вопрос» от Saturday Night Live, где сегодняшний именинник Лиам Нисон принял непосредственное участие.
#ВИДЕОТЕКА
#LiamNeeson
#SNL
«Профессионал» (2024). Режиссер — Ханс Петтер Муланд.
Время идет, а традиция ежегодного просмотра свежего боевичка с Лиамом Нисоном соблюдается. Наконец-то дошли руки до его недавней работы «Отпущение грехов», которую у нас в прокате непонятно с какой стати назвали «Профессионал». В общем-то, никакой это не боевичок, а криминальная драма с гомеопатическими вкраплениями экшена и даже какой-никакой претензией на авторское кино. Ханс Петтер Мулланд еще 10 лет назад прогремел на Берлинале своей картиной «Дурацкое дело нехитрое», а затем поставил в Голливуде ее ремейк, где все тот же Нисон сыграл главную роль.
Так что это явно получше «Честного вора» и «Игры теней», к тому же Рона Перлмана на втором плане всегда приятно видеть. Но не ждите от этой истории о престарелом гангстере, который на фоне прогрессирующей энцефалопатии пытается наладить отношения с дочерью и внуками каких-либо откровений. Чем дальше, тем кино становится все более скучным и затянутым. И тем сильнее вызывает недоумение его отечественная локализация. Особенно после того, как видишь героя Нисона в майке-алкоголичке и семейных трусах в постельных сценах, а также неуклюжей цитаты из «Таксиста» в финале.
«Хищник: Убийца убийц» (2025). Режиссёры — Дэн Трахтенберг, Мичо Рутейр.
Перед выходом очередной части саги об инопланетном охотнике в качестве затравки нам решили выдать анимационный экшн-альманах из трех историй, которые в финале сходятся в одной точке. Критики поспешили забросать новый релиз хвалебными рецензиями, но, честно говоря, не разделяю такого восторга. Да, свежо, эффектно и кроваво, да, киновселенную расширили и показали то, что мы еще не видели, оставив задел на следующие части, но шедевром это назвать нельзя даже с натяжкой. Хотя, может быть, я чего-то и не понимаю.
Отдельное спасибо создателям за Майкла Бьена, который озвучил американского летчика времен Второй Мировой войны. Слышать его было очень приятно.
«Уик — это боль» (2025). Режиссер — Джеффри Доу.
Не выдающийся, но вполне себе честный и искренний документальный фильм о том, как создавалась главная экшн-франшиза последнего десятилетия. Меня сложно назвать прям большим фанатом «Джона Уика», но эти картины делали люди, влюбленные в свое дело и в жанр боевика. И все эти ребята в каждую часть саги о киллере по кличке Баба-Яга вкладывали все, что у них есть, включая здоровье. Особняком, конечно, среди них стоит Киану Ривз, которого после этой документалки не зауважать еще сильнее просто невозможно. Вот уж кто и Актёр, и Каскадер, и Профессионал, и Человек.
#ВИДЕОТЕКА
#ВИДЕОТЕКАДайджест
#LiamNeeson
#ЛиамНисон
#Absolution
#PredatorKillerOfKillers
#WickIsPain
#KeanuReeves
#КиануРивз
«Меня всегда привлекал тип героя тех фильмов, что я видел в подростковом возрасте в Ирландии. Первым приходит в голову Роберт Митчум. Позже это были Стив Маккуин в определённой степени, а также Чарльз Бронсон. Это такие персонажи, которые одной ногой были на стороне закона и порядка, а другой — на стороне плохих парней».
Сегодня Лиаму Нисону исполнилось 73 года.
#ВИДЕОТЕКА
#LiamNeeson
#MiamiVice
#SchindlersList
#RobRoy
#StarWarsEpisodeIThePhantomMenace
#LoveActually
#Taken
#TheGrey
#Unknown
#TheIceRoad
#Absolution
«Ледяной драйв 2: Возмездие» (2025). Режиссер — Джонатан Хенсли.
Лиам Нисон впервые со времен «Заложницы» снялся в продолжении своего же фильма. Конечно, лет 30 назад наши пираты запросто могли бы все его боевички объединить в несуществующую франшизу, как это уже было со Стивеном Сигалом и его «Нико». Но на самом деле сиквелы его картины получают не так уж и часто. Первый «Ледяной драйв» оказался вполне себе симпатичным приключенческим триллером в духе классической «Платы за страх», и даже стал некой отдушиной в нашем постковидном прокате лета-2021. Так что вторую часть ожидал с интересом.
К сожалению, сиквел является еще одним типичным боевичком с Лиамом Нисоном последних лет — весьма скромным по качеству. Той самой атмосферы оригинала здесь практически нет, зато добавили побольше невыразительных перестрелок с нарисованными при помощи CGI выстрелами. Скучно, пусто, одноразово. И даже дуэт Нисона и Фань Бинбин это унылое зрелище никак не спасает. Но хотя бы обошлись без постельных сцен в семейных трусах — и на том спасибо.
«Крайне опасен» («Разыскиваемый») (2024). Режиссер — Дольф Лундгрен.
А вот эта режиссерская работа от легендарного шведа приятно удивила. Вы не ошиблись, это боевик категории Б, где Лундгрен снимается уже давно, но старательный и крепко сбитый. Как известно, последние несколько лет Дольф сражался с раком, и здесь он как нельзя кстати подошел на роль потрепанного жизнью возрастного полицейского, которому пришлось защищать свидетельницу от картеля и коррумпированных коллег. Историю компактно уложили в полтора часа без каких-то серьезных косяков, а разыграть ее помогли еще один ветеран «бэшек» Майкл Паре и Келси Грэммер собственной персоной. Вот уж кого неожиданно было увидеть в таком образе и такой роли. В общем, получилось вполне смотрибельно.
«Каратэ-пацан: Легенды» (2025). Режиссер — Джонатан Энтвистл.
Этот фильм я ждал. Идея продолжить одновременно и ремейк, и оригинал (и, соответственно, недавно завершившийся сериал «Кобра Кай») показалась мне как минимум любопытной. И посмотрел его уж точно не зря. Ну да, рассказ получился, может быть, слишком клиповым и скомканным, но как легкий молодёжный фильм о боевых искусствах с правильной мотивацией кино вполне сгодится. Героя Джеки Чана в оригинальную историю о Мияги и ЛаРуссо встроили органично, да и просто видеть его вместе с Ральфом Маччио было приятно. Продолжение я бы посмотрел, тем более, что кассовые сборы на это вроде бы рассчитывать позволяют.
#ВИДЕОТЕКА
#ВИДЕОТЕКАДайджест
#ЛедянойДрайвВозмездие
#LiamNeeson
#ЛиамНисон
#ДольфЛундгрен
#КрайнеОпасен
#DolphLundgren
#KelseyGrammer
#КелсиГрэммер
#КаратэПацанЛегенды
#JackieChan
#ДжекиЧан
#РальфМаччио