我们有一些由C程序创建的二进制文件.
通过调用fwrite将以下C结构写入文件来创建一种类型的文件:
typedef struct { unsigned long int foo; unsigned short int bar; unsigned short int bow; } easyStruc;
在Python中,我读取此文件的结构如下:
class easyStruc(Structure): _fields_ = [ ("foo",c_ulong),("bar",c_ushort),("bow",c_ushort) ] f = open (filestring,'rb') record = censusRecord() while (f.readinto(record) != 0): ##do stuff f.close()
这很好.我们的其他类型的文件使用以下结构创建:
typedef struct { // bin file (one file per year) unsigned long int foo; float barFloat[4]; float bowFloat[17]; } strucWithArrays;
我不确定如何在Python中创建结构.
解决方法
根据这个
documentation page(部分:15.15.1.13.数组),它应该是这样的:
class strucWithArrays(Structure): _fields_ = [ ("foo",("barFloat",c_float * 4),("bowFloat",c_float * 17)]