TGTGInsighttelegram intelligenceLIVE / telegram public index
← Python Заметки

TGINSIGHT SIMILAR POSTS

Најди сличен содржај

Изворен канал @pythonotes · Post #241 · 5 мај

Можно ли в 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

Hashtags

Резултати

Пронајдени 1 слични објави

Пребарај: #freepeoplefirst

当前筛选 #freepeoplefirst清除筛选

Поддержите нашу кампанию в соц. сетях! Мы, антивоенные активисты, правозащитники, все, кто выступает против войны, в свете приближающейся встречи президента США Дональда Трампа и Владимира Путина, опасаемся, что эта встреча может привести к заключению тактического краткосрочного соглашения, которое может нанести непоправимый ущерб Украине, Европе и международной безопасности, а судьбы людей, находящихся в плену, не станут приоритетом соглашения сторон. Мы хотим привлечь внимание к жизни всех и каждого незаконнозадержанного – украинских гражданских, депортированных украинских детей, украинских военнопленных и российских политзаключенных, оказавшихся в заключении за свою антивоенную позицию. Мы приглашаем вас присоединиться к нашему флешмобу, чтобы вернуть внимание к жизням людей и требовать безусловного освобождения всех узников этой войны. Напишите Free people first на ладони вашей руки и выложите фотографию в социальные сети. Присылайте ваши фото в бот t.me/People1rst_bot. ————— Підтримайте нашу кампанію в соцмережах! Ми, антивоєнні активісти, правозахисники та всі, хто виступає проти війни, з огляду на майбутню зустріч президента США Дональда Трампа та Володимира Путіна, переймаємося, що ця зустріч може призвести до укладення тактичної короткострокової угоди, яка може завдати непоправної шкоди Україні, Європі та міжнародній безпеці, а доля полонених не буде пріоритетом для сторін. Ми хочемо привернути увагу до життя кожного й кожної з числа незаконно поневолених — українських цивільних осіб, депортованих українських дітей, українських військовополонених та політичних в'язнів, які були ув'язнені за свою антивоєнну позицію. Ми запрошуємо вас приєднатися до нашого флешмобу, щоб привернути увагу до життя людей і вимагати безумовного звільнення всіх бранців російської війни в Україні. Напишіть Free people first на долоні своєї руки та викладіть фото в соціальні мережі. Надсилайте свої фото в бот t.me/People1rst_bot. ————— Support our campaign in social media We, anti-war activists, human rights defenders, and all those who oppose war, in light of the upcoming meeting between US President Donald Trump and Vladimir Putin, fear that this meeting could lead to a tactical short-term agreement that could cause irreparable damage to Ukraine, Europe and international security, and that the fate of those held captive will not be a priority for the parties to the agreement. We want to draw attention to the lives of each and every one of those illegally detained — Ukrainian civilians, deported Ukrainian children, Ukrainian prisoners of war and Russian political prisoners who have been imprisoned for their anti-war stance. We invite you to join our flashmob to draw attention back to people's lives and demand the unconditional release of all prisoners of this war. Write Free people first on the palm of your hand and post a photo on social media. Send your photo to our bot t.me/People1rst_bot. #People1st#BringPeopleHomeFirst#ЛюдиПревышеВсего#PeopleAreNotNegotiable#PeopleAreKey#ЛюдиKлючові#FreePeopleFirst#FreeThemAll