如何使用Python的ctypes和readinto读取包含数组的结构?
发布时间:2021-01-11 17:41:09  所属栏目:Python  来源:互联网 
            导读:我们有一些由C程序创建的二进制文件. 通过调用fwrite将以下C结构写入文件来创建一种类型的文件: typedef struct { unsigned long int foo; unsigned short int bar; unsigned short int bow;} easyStruc; 在Python中,我读取此文件的结构如下: class easyStr
                
                
                
            | 
                         我们有一些由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)] 
 查看该文档页面以获取其他示例. (编辑:莱芜站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!  | 
                  
推荐文章
            站长推荐
            - python装饰器(新年第一写)
 - 【Python】python进程池:multiprocessing.pool
 - python – 递归地按键对嵌套的OrderedDict进行排
 - 有时PyDev不会将.py文件识别为python源文件
 - 【Python】多进程报错:DUPLICATE_SAME_ACCESS P
 - python – 在Flask中重置cookie的到期时间
 - python – 通过没有循环的2D索引数组索引2D nump
 - python – 尝试在嵌套字典中查找唯一值的总和. (
 - python – 使用sсikit-learn TfIdf和gensim LDA
 - 【Python-多进程】Python中多进程之间的数据共享
 
热点阅读
            