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

Резултати

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

Пребарај: #coupon

当前筛选 #coupon清除筛选
Recursion Automata® 通知频道

@RecMataChannel · Post #279 · 07.05.2025 г., 05:07

#info#coupon 近期观察到洛杉矶某大型服务器托管站点经历了严重的意外断电事故,我们表示严重关切。 我们的代理服务聚合了多地多线的中国优化线路,能够尽可能地减少这类事故对您的代理需求的影响。 使用限量优惠码 LAXBlackout 在任意套餐任意周期获取 2️⃣0️⃣ 价格。 同时我们推出闲置 VPS 托管计划,您可以用您的闲置小鸡剩余价值来交换我们的网站余额(仅可用于站内消费)。 您无需 Push 操作,只需要交付 root 权限即可,托管期间 IP 如果被封锁我们会支付更换费用。要求小鸡路由为中国优化线路,最低保证移动单网直连。

Hashtags

Recursion Automata® 通知频道

@RecMataChannel · Post #270 · 18.04.2025 г., 15:14

#info#core#coupon 🍏 iOS 除 🚀 Shadowrocket 以外第一个支持 VLESS REALITY 的客户端上线 App Store 了。 微微活动以表敬意,本周末属于 🎈 Loon。 WELCOME-LOON2️⃣0️⃣ 对所有 📀Core 订阅生效,持续到周一前。 其他订阅早已属于人人买得起的水平,就不额外做活动了。

12
ПретходнаСтраница 1 од 2Следна