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

Резултати

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

Пребарај: #exspeed

当前筛选 #exspeed清除筛选
机场花名册|持续更新

@airportroster · Post #899 · 10.06.2022 г., 12:43

(本次排查全体在榜机场,已经公布的就跳过了) 以下机场已跑路: 机场编号 机场名称 跑路原因 #编号506#Tired 已被 #WHYsless 合并 #编号522#起点云 纯公益的尽头是跑路 #编号525#Kirino 封车不维护了 #编号530#WANWAN 封车不做了 #编号535#熊崽猫咖 摆烂不做了 #编号554#吉他云 未知 #编号559#翻墙VPN 开地图炮被打 #编号639#小黑加速器 不开了 #编号409#蜜桃云 未知 #编号413#快萌 已合并到 #祢豆子 #编号450#FastVPN 未知 #编号451#whalecloud 机场主直接开摆,说六月上旬恢复。约等于跑路。 #编号456#VS服务 未知 #编号225#MOJITO 未知 #编号228#711cloud 未知 #编号239#小鸟云 早就跑路 #编号294#EXspeed 长时间不修节点,约等于跑路。 #编号106#Alink 已被 #NTHU 接手 #编号107#桃子男孩渡海边来 几个月前被抓了 #编号126#樱花落在纸上 未知 #编号127#Hxray 摆烂不做了 #编号156#72VPN 未知 #编号186#星云 节点放弃维护,跑路了 #编号194#Electry 无法找到新网址,故暂定为跑路。 #编号601#宝宝巴士 未知 上期跑路名单回顾 上上期跑路名单回顾 以下机场有特殊情况: #编号524#日不落 群主已蒸发,可能会跑。 #编号621#西瓜机场 无法确定是否跑路 #编号630#Morino 可能全新换名字了 #编号663#次元城 一个月内被转手两次,前期依靠便宜流量包吸引用户 #编号429#Fartrans 该机场备受争议,是为数不多的免流大机场 #编号283#xdmyyds 前段时间已被原机场主转手 #编号123#猫尾酒馆 现已由 #kekocloud 接手 #编号48#速蛙云 处于舆论中心,被某鹰针对中. #编号320#逸云 节点已大部分失联,网站不稳定,群转私有 如有上述机场信息有误,新补充跑路机场,可留言提醒。(累死宝宝了~)