用于二进制数据的强大的声明性解析器/构建器
项目描述
Construct 是一个强大的二进制数据声明式解析器(和构建器)。
您无需编写命令式代码来解析一段数据,而是以声明方式定义描述数据的数据结构。由于此数据结构不是代码,因此您可以在一个方向使用它来将数据解析为 Pythonic 对象,并在另一个方向将对象转换(“构建”)为二进制数据。
该库提供了简单的原子结构(例如各种大小的整数),以及允许您形成复杂度不断增加的层次结构的复合结构。Construct 具有位和字节粒度,易于调试和测试, 易于扩展的子类系统,以及许多使您的工作更轻松的原始构造:
字段:原始字节或数字类型
结构和序列:将更简单的结构组合成更复杂的结构
适配器:改变数据的表示方式
数组/范围:重复结构
元构造:使用上下文(历史)来计算数据的大小
if/Switch:根据上下文分支计算路径
按需(惰性)解析:只读你需要的
指针:在数据流中从这里跳转到那里
例子
PascalString是以长度为前缀的字符串:
>>> from construct import *
>>>
>>> PascalString = Struct("PascalString",
... UBInt8("length"),
... Bytes("data", lambda ctx: ctx.length),
... )
>>>
>>> PascalString.parse("\x05helloXXX")
Container({'length': 5, 'data': 'hello'})
>>> PascalString.build(Container(length = 6, data = "foobar"))
'\x06foobar'
让我们使用适配器,而不是手动指定长度:
>>> PascalString2 = ExprAdapter(PascalString,
... encoder = lambda obj, ctx: Container(length = len(obj), data = obj),
... decoder = lambda obj, ctx: obj.data
... )
>>> PascalString2.parse("\x05hello")
'hello'
>>> PascalString2.build("i'm a long string")
"\x11i'm a long string"
资源
Construct 的主页是http://construct.readthedocs.org,在这里您可以找到各种文档和资源。该库本身是在github上开发的;请使用github issues报告错误,并使用 github pull-requests 发送补丁。对于一般性讨论或问题,请使用 新的讨论组。
要求
Construct 应该在任何 Python 2.5-3.5 或 PyPy 实现上运行。
它唯一的要求是6,用于克服 Python 2 和 3 之间的差异。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
ak-construct-2.5.2.tar.gz
(58.3 kB
查看哈希)
内置分布
ak_construct-2.5.2-py2.py3-none-any.whl
(73.2 kB
查看哈希)
关
ak_construct -2.5.2-py2.py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | 6206368eb9bfe2baa9112e0b27e025a0553b6bb6ab27936ca39e3e5052d85fc0 |
|
| MD5 | eb5667fb249c9f3e10c25ca5b2917fe7 |
|
| 布莱克2-256 | 845b570592d94eb7ffb6f11c78a7ed880f50607cbc99f7aab4e6de1435e1a11f |