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

Резултати

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

Пребарај: #nmbot

当前筛选 #nmbot清除筛选
nmBot 频道

@nmbotchannel · Post #236 · 18.05.2023 г., 08:28

迎接第 12 个全球无障碍宣传日:nmTeam 的愿景与行动 2023 年 5 月 18 日是第 12 个全球无障碍宣传日。一直以来,nmTeam 致力于为残障用户提供与其他用户一致的产品使用体验。 我们始终致力于优化 nmTeam 产品的无障碍体验,让每个人用起来都轻松。例如,最近我们: • 改进了 nmTeam 官方网站中图标和链接的标签文本; • 正在改进 nmBot 面板中部分元素和操作的屏幕阅读器体验。相关改进将会在 6 月更新和后续版本中发布。 点击这里,进一步了解 nmTeam 产品的辅助功能和无障碍承诺。 Celebrating the 12th Global Accessibility Awareness Day: nmTeam's Vision and Actions May 18, 2023 is the 12th Global Accessibility Awareness Day. nmTeam has been always committed to providing users with disabilities with the same product experience as other users. We are always working on optimizing the accessibility experience of nmTeam products, making it easy for everyone to use. For example, recently we: • Improved label text for icons and links in nmTeam official website; • Improved the screen reader experience for some elements and actions in the nmBot panel. Relevant improvements will be released in the June Update and subsequent releases. Click here to learn more about nmTeam's commitment to accessibility for our products. 🏷#Accessibility#nmBot 🔗https://newsroom.nmteam.xyz/news/nmteam/50-12th-Global-Accessibility-Awareness-Day-2023-05-18.html 👥@nmteamchat