Можно ли в 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
#Notification#Howard_Wu
模块:io.github.howard20181.notificationiconfix
简介:Notification Icon Fix / 通知图标修复
版本:103-1.7.1
更新时间:2026/03/23 00:03:03
更新日志:
变更日志
重构图标生成算法,现在背景是渐变色的也可以计算轮廓
支持 API 101
Changelog
Refactored icon generation algorithm; now it can calculate outlines even with gradient backgrounds.
Added support for API 101.
Fix #1,#12,#13
@lsposed_Modules_Updates_Trackers | @lsposed_Geeks_Bot
#异常通知
我们监控到 洛杉矶2节点出现故障,目前我们正在联系上游询问具体原因,请大家耐心等待。
给您带来不便深表歉意,如有其他疑问请提交服务单联系我们。
#Notification of Anomaly
We have detected a malfunction at the Los Angeles2 node. We are currently contacting upstream suppliers to inquire about the specific cause. Please be patient.
We sincerely apologize for any inconvenience this may cause. If you have any further questions, please submit a service request to contact us.
#异常通知
我们监控到 United Kingdom 区域的1台节点 (Node: GBC) 出现 内存故障,导致内核崩溃一直重启,我们已重新部署新的实例节点,将逐步迁移受影响的实例到同区域新的实例节点上,迁移之间您的实例将会有短暂的失联状态,迁移花费时长将和您的实例磁盘大小有关系,请大家耐心等待。
给您带来不便深表歉意,如有其他疑问请提交服务单联系我们。
#Notification of Anomaly
We have detected a memory failure on one node (Node: GBC) within the United Kingdom region, resulting in a kernel crash and continuous reboots. We have redeployed a new instance node and will progressively migrate affected instances to this new node within the same region. During migration, your instances may experience brief periods of unavailability. The duration of migration will depend on the disk size of your instance. We kindly request your patience during this process.
We sincerely apologise for any inconvenience caused. Should you have further queries, please submit a support ticket to contact us.
#异常通知
我们检测发现我们的SGS区域由于我们和上游的备份BGP Session没有生效,导致上游在维护时和上游的BGP Session断开,目前正在修复,带来不便深表歉意,请耐心等待。
#Notification of Anomaly
We have discovered that our SGS region experienced a disconnection during upstream maintenance due to the failure of our backup BGP Session with the upstreams. We are currently working on fixing this issue and sincerely apologize for any inconvenience caused. Please be patient.
#异常通知
我们监控到 Germany 区域的1台节点 出现 硬件故障,上游正在安排远程手进行查看,请大家耐心等待。
给您带来不便深表歉意,如有其他疑问请提交服务单联系我们。
#Notification of Anomaly
We have detected a hardware failure on one node in the Germany region. Upstream personnel are arranging for remote assistance. Please wait patiently.
We sincerely apologize for any inconvenience this may cause. For any further questions, please submit a service request to contact us.
#异常通知
我们监控到 Singapore Standard 区域的1台节点 出现 磁盘阵列 故障,读写性能下降,我们将在明后天逐步迁移受影响的实例到同区域的其他节点上,迁移之间您的实例将会有短暂的失联状态,迁移花费时长将和您的实例磁盘大小有关系,请大家耐心等待。
给您带来不便深表歉意,如有其他疑问请提交服务单联系我们。
#Notification of Anomaly
We have detected a disk array failure on one node in the Singapore Standard region, resulting in decreased read and write performance. We will be gradually migrating affected instances to other nodes in the same region over the next two days. Your instance will experience a brief period of inaccessibility during the migration. The migration time will depend on the size of your instance's disk. Please be patient.
We sincerely apologize for any inconvenience this may cause. If you have any further questions, please submit a service request to contact us.
#异常通知
我们监控到 盐湖城节点出现故障,目前我们正在联系上游询问具体原因,请大家耐心等待。
给您带来不便深表歉意,如有其他疑问请提交服务单联系我们。
#Notification of Anomaly
We have detected a malfunction at the Salt Lake City node. We are currently contacting upstream suppliers to inquire about the specific cause. Please be patient.
We sincerely apologize for any inconvenience this may cause. If you have any further questions, please submit a service request to contact us.
@shiiinabot
Qué puede hacer este bot?
Un bot para eliminar automáticamente los mensajes no deseados predefinidos del grupo.
Idioma: Portugués
(visto en @BotsGram_cu)
#delete, #group, #notification, #message, #regex, #spam, #picture, #remove
@TodoTask_bot
Qué puede hacer este bot?
Bot simple que ayuda a realizar un seguimiento y te recuerda las tareas pendientes
Idioma: Inglés
(visto en @BotsGram_cu)
#todo, #organize, #productivity, #do, #remind, #alarm, #notification, #notify