我有.dat文件,我试图在python中读取。文件格式为:
1.1 CDR description1
Field length(bytes) Offset
x 4 0
x1 2 4
x2 1 6
x3 1 7
......
......
......
x4 16 210
x5 4 226
x6 70 230
Total length of information 300
这些是CDR记录,我正在尝试使用struct
模块阅读,但我无法理解如何将其与我的特定文件格式一起使用...任何帮助?
答案 0 :(得分:2)
您需要知道struct
模块在每个字段中存储的种信息,以了解每个字段。
例如,偏移0处的第一个字段长度为4个字节,这意味着它可以是int
(范围从-2,147,483,648到+2,147,483,647)或者它可以是unsigned int
(范围)从0到4,294,967,295)。它也可以是单精度浮点数。
您可能还需要弄清楚文件格式的endianness。如果未明确命名,则需要进行一些实验,或从上下文推断出它的内容(例如,Windows文件格式几乎总是小端)。
如果你只想解压前4个值,你会读取正确的字节数(格式为8个)并将其传递给struct.unpack
函数以及一组格式化字符,以告诉struct什么类型期待。如果我们假设小端数据,并且前四个字段分别表示无符号整数,无符号短整数和两个无符号字符,则使用:
with open('something.cdr', 'rb') as data:
x, x1, x2, x3 = struct.unpack('<IH2B', data.read(8))