【发布时间】:2011-05-25 23:12:28
【问题描述】:
有没有像 Ruby 的 BinData 这样的优秀 Python 解决方案来读取用户定义的二进制文件/流格式?如果不是,那么在 Python 中除了使用 struct 模块之外,首选的方法是什么?
我有一个存储事件“记录”的二进制文件。记录的大小是动态的,因此我必须读取每条记录的前几个字节以确定记录长度和记录类型。不同的记录类型将具有不同的字节布局。例如,“警告”类型的记录可能包含三个 4 字节整数,后跟一个 128 字节的值,而“信息”类型的记录可能只有五个 4 字节整数。
最好以这样一种方式定义不同的记录类型及其结构,以便我可以简单地将二进制 blob 传递给某物,然后由它处理其余部分(对象生成等)。简而言之,您定义的模板/映射如何解释二进制数据。
【问题讨论】:
-
看过
struct模块吗? -
是的,但乍一看我不知道有一种方法可以指定像 BinData 这样的自定义结构。
-
你需要做哪些struct模块不能做的事情?
-
“自定义结构”是什么意思?您需要比“像 [Ruby's] binData”更具体。通过提供非常模糊的要求,您不必要地限制了可能能够帮助您的人数。能够回答您问题的人是那些在 Ruby 和 Python 中阅读二进制数据的经验丰富的人。这是一个非常小的人口。即使是拥有良好 Ruby 和 Python 经验的开发人员也很少,更不用说处理原始二进制数据(当今世界越来越少见)。
-
感谢尼古拉斯。现在阅读它,我意识到我匆忙发布了这个问题,并没有花时间解释我实际上想要做什么。我已经更新了我上面的问题。
标签: python ruby binary binary-data