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

Резултати

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

Пребарај: #1gbps

当前筛选 #1gbps清除筛选

#茶艺机场 #湖南电信#1Gbps 官网:http://cy.z49.top/ 频道:@cyjichang 群组:@chayijichang 套餐:https://s1.locimg.com/2024/12/06/d278e47dbcaa1.jpg 主观点评:综合倍率来看,价格略贵。基本已经在18-20元(每百G)档位。出口Akile全家桶,不过入口资源丰富多样,专线口子也不小。推荐老板多点一点落地的技能树。 主观评级:首测暂不评分。

VPS简测

@vps_test · Post #70 · 14.05.2023 г., 06:31

DigitalOcean Frankfurt 法兰克福 下行15Gbps,上行2Gbps,用的人较少,欧洲用户选他比较多,国际互连比较强 套京德IPLC直接起飞,超级无敌的落地鸡 #digitalocean#1Gbps#建站

VPS简测

@vps_test · Post #68 · 14.05.2023 г., 06:29

DigitalOcean Singapore 新加坡 下行1.5Gbps,上行2Gbps,带宽较小 电信/联通拉稀,广移可拉 网络不是很稳定,因为APE海缆脆弱,老波及到 #digitalocean#1Gbps#建站

VPS简测

@vps_test · Post #131 · 07.06.2023 г., 02:58

DediPath Hybrid Server(高性能不超售服务器)原价11.4刀,官方5折->5.7刀 2C4G250G HDD 意外的是流媒体解锁,G口真不限流量!适合建站,中国移动部分省份用不了(比如江苏) #dedipath#1Gbps#不限流量#流媒体解锁

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