Можно ли в 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
В основном конкурсе предстоящих Канн 12–23 мая будут участвовать:
«Минотавр» / Minotaur, Андрей Звягинцев. Драма о руководителе крупной российской компании, у которого рушатся работа и личная жизнь. В ролях: Анатолий Белый, Варвара Шмыкова.
«Возлюбленная» / El Ser Querido (The Beloved), Родриго Сорогойен. Семейная драма о знаменитом режиссере и его дочери-актрисе, которые снова встречаются на съемочной площадке. В ролях: Хавьер Бардем, Виктория Луэнго, Марина Фоис.
«Мужчина, которого я люблю» / The Man I Love, Айра Сакс. Нью-Йорк конца 1980-х: театральный артист, живущий со СПИДом, получает, возможно, последнюю большую роль. В ролях: Рами Малек, Ребекка Холл.
«Отечество» / Fatherland, Павел Павликовский. Историческая драма о Томасе Манне и его дочери Эрике Манн, которые в 1949 году едут через послевоенную Германию. В ролях: Ханнс Цишлер, Сандра Хюллер.
«Мулен» / Moulin, Ласло Немеш. Биографическая драма о деятеле французского Сопротивления Жане Мулене. В ролях: Жиль Леллуш, Ларс Айдингер.
«Праздник дня рождения» / The Birthday Party, Леа Мисиюс. Триллер о семейном празднике, вокруг которого начинают происходить все более тревожные события. В ролях: Хафсия Эрзи, Бенуа Мажимель, Моника Беллуччи.
«Фьорд» / Fjord, Кристиан Мунджиу. Драма о семье, переехавшей в норвежскую деревню и оказавшейся под подозрением. В ролях: Себастиан Стэн, Ренате Рейнсве.
«Наше спасение» / Notre Salut, Эмманюэль Марр. История человека, который в 1940 году пытается встроиться в режим Виши. В ролях: Сванн Арло.
«Нежный монстр» / Gentle Monster, Мари Кройцер. Драма о знаменитой пианистке, чья жизнь начинает трещать после переезда за город. В ролях: Леа Сейду, Катрин Денев.
«Заметки Наги» / Nagi Notes, Кодзи Фукада. История художницы Ёрико в сельской Наги, которая не может пережить прежнюю любовную связь. Актерский состав пока не раскрыт.
«Надежда» / Hope, На Хон Чжин. Научно-фантастический триллер о загадочном открытии на окраине удаленного портового городка. В ролях: Алисия Викандер, Майкл Фассбендер, Тейлор Расселл.
«Барашек в коробке» / Sheep in the Box, Хирокадзу Корээда. Фильм заявлен в конкурсе, но подробный синопсис и актерский состав пока не раскрыты.
«Неизвестная» / The Unknown, Артюр Арари. Психологическое фэнтези, частично вдохновленное графическим романом Le cas David Zimmerman. В ролях: Леа Сейду, Нильс Шнайдер.
«Все внезапно» / All of a Sudden, Рюсукэ Хамагути. Драма о руководительнице дома престарелых в пригороде Парижа, которая встречает смертельно больную японскую драматургиню. В ролях: Виржини Эфира, Тао Окамото.
«Воображенное приключение» / Das Geträumte Abenteuer, Валеска Гризебах. Драма о женщине, которая в пограничной зоне между Болгарией, Грецией и Турцией соглашается помочь старому знакомому в незаконном деле.
«Горькое Рождество» / Amarga Navidad, Педро Альмодовар. Трагикомедия о женщине, переживающей смерть матери, и о превращении личной жизни в автофикшн. В ролях: Барбара Ленни, Леонардо Сбаралья.
«Параллельные истории» / Parallel Tales, Асгар Фархади. Драма с несколькими переплетающимися сюжетными линиями. В ролях: Изабель Юппер, Венсан Кассель, Виржини Эфира, Катрин Денев.
«Жизнь женщины» / A Woman’s Life, Шарлин Буржуа-Таке. Подробный синопсис пока не раскрыт. В ролях: Леа Дрюкер, Мелани Тьерри, Лоран Лафитт.
«Черный шар» / La Bola Negra, Хавьер Кальво и Хавьер Амбросси. Драма о трех мужчинах, связанных желанием, болью и семейным наследием в разные эпохи. В ролях: Пенелопа Крус, Гленн Клоуз.
«Трус» / Coward, Лукас Донт. Военная драма о бельгийском солдате в окопах Первой мировой. Актерский состав пока не раскрыт.
«Другой день» / Another Day, Жанн Эрри. История молодой актрисы, проходящей через тревогу, переезды и нарастающую зависимость. В ролях: Адель Экзаркопулос.
Еще интересно, что в секции Un Certain Regard заявлен фильм «UĻA» латвийского режиссера Виестурса Кайришса. В синопсисе говорится, что это история о старообрядцах и о баскетболистке Ульяне Семёновой.
на фото Шэрон Тейт на съёмках «Долина кукол», 1967
#cannes
В 1957 году Франсуа Трюффо приехал в Канны в качестве молодого критика, представляющего Cahiers du Cinéma. Всего через год, в 1958 году, его запретили приглашать на фестиваль и обвинили в нападении на основы французского кино
В 1959 году он совершил триумфальное возвращение — на этот раз в качестве режиссёра с фильмом «400 ударов», став лучшим режиссёром этого выпуска
#cannes
78-й Каннский фестиваль подвёл итоги и список победителей получился на редкость разносторонним. Ниже —фильмы, о которых будут говорить всё лето:
Золотая пальмовая ветвь — «Простая случайность», реж. Джафар Панахи
Триллер о бывшем политзаключённом, который сталкивается с человеком, похожим на его бывшего палача, и решает выяснить правду. Фильм исследует темы мести и справедливости
Гран-при — «Сентиментальная ценность», реж. Йоаким Триер
Драма о напряжённых отношениях между отцом, режиссёром в упадке, и его дочерью, актрисой. Фильм исследует темы семейных конфликтов и искусства
Лучший режиссёр — Клебер Мендонса Фильо, «Тайный агент»
Политический триллер, действие которого происходит в Бразилии 1970-х годов, во времена военной диктатуры. Фильм исследует темы диктатуры и сопротивления
Приз жюри — «Сират», реж. Оливер Лаше
История отца, который вместе с сыном отправляется в Марокко на поиски пропавшей дочери
Приз жюри — «Звук падения», реж. Маша Шилински
Эпическая сага, охватывающая столетие, о четырёх девушках, живущих на немецкой ферме в разные эпохи
Лучший сценарий — «Молодые матери», реж. Жан-Пьер и Люк Дарденны
Реалистичный портрет пяти подростков, ставших матерями, и их жизни в приюте. Фильм поднимает вопросы социальной поддержки и личной ответственности
Лучшая женская роль — Надя Меллити, «Младшая сестра»
История молодой женщины, дочери алжирских иммигрантов, которая сталкивается с конфликтом между традициями и своей идентичностью
Лучшая мужская роль — Вагнер Моура, «Тайный агент»
Вагнер Моура исполняет роль агента в политическом триллере, действие которого происходит во времена военной диктатуры в Бразилии
Специальный приз — «Воскрешение», реж. Би Гань
Визуально насыщенное и метакинематографическое путешествие, исследующее историю кино и человеческую память через онейрическую призму
«Золотая камера» за лучший дебют — «Президентский торт», реж. Хасан Хади
Иракская история о детях, которые готовят торт для президента во времена режима Саддама Хусейна, отражая жизнь под диктатурой
Лучший короткометражный фильм — «Я буду рад, если ты сейчас умрешь», реж. Тауфик Баром
Короткометражный фильм, исследующий темы агрессии и абсурда в офисной среде
Все победители Канн 2025 ТУТ
#cannes
Blackout — целый день все в Каннах и окрестностях без электричества. Французские власти называют это актом саботажа: был подожжён трансформатор и повреждён пилон линии электропередачи
Фестиваль не растерялся — переключился на генераторы, и показ «Звука падения» в зале Агнес Варда возобновился через 20 минут после темноты и аварийного освещения. Церемония закрытия кинофестиваля идет своим чередом
Следствие уже начато, но власти пока не утверждают, что целью атаки стал сам фестиваль
Пока прокуратура ищет виновных, полицейские вручную регулируют движение на перекрёстках, а туристы хлопают в ресторанах, когда наконец возвращается свет
#cannes
На «Неделе критики» в Каннах главный приз получил фильм A Useful Ghost о женщине, погибшей от загрязнения воздуха, которая возвращается в этот мир… в виде пылесоса. Героиня борется за право быть полезной даже после смерти — изгоняет призраков на семейной фабрике, налаживает отношения с роднёй и, видимо, очень хорошо убирается, потому что Канны аплодировали стоя
Метафоры — густые, как смог над Бангкоком: капитализм, классовое неравенство, токсичные родственники и пыль, под которой прячется всё. В главных ролях: актриса, актёр, пылесос
«A Useful Ghost» получил высокие оценки критиков за свою оригинальность, глубокий смысл и смелость в освещении острых социальных тем. Фильм был отмечен как «смелая и независимая работа, которая сочетает в себе юмор, политический комментарий и глубокую человечность»
#cannes