python开发---python处理binary文件

     python处理binary文件的基本流程如下:

TrainLabelFileName = r'/home/yml/桌面/mnist/train-labels.idx1-ubyte'
TLbinfile = open(TrainLabelFileName,'rb')
TLbuf = TLbinfile.read()

对与buffer做一些处理

TLbinfile.close

     而对应binary buffer的处理,可以考虑使用python提供的struct模块。struct是python的库,可以用来处理binary data,这些data可能来自文件,网络连接或是其他的地方,也可以处理原本使用C语言结构体描述的复杂信息。

struct提供多个处理函数:

Index函数描述
1struct.pack(formatv1v2...)将v1,v2...按照format格式打包并返回
2struct.pack_into(formatbufferoffsetv1v2...)将v1,v2....按照format格式打包,并写入到buffer的offset地方
3struct.unpack(formatbuffer)按照format格式解析buffer,并返回,返回值是一个tuple类型,可以通过calcsize()来计算长度
4struct.unpack_from(formatbufferoffset=0)按照format格式解析buffer的制定偏移,,返回值是一个tuple类型,可以通过calcsize()来计算长度
5struct.iter_unpack(format,buffer) 
6struct.calcsize(format)计算format格式所需的字节长度

     

format格式

struct的format格式包括两个部分:编码标识和格式标识

编码标识包括字节序,大小和对齐方式

注意:

  • native byte order表示跟随系统的配置,python可以使用sys.byteorder来获取到大小端格式;
  • native size and alignment表示根据C编译器的sizeof的操作
  • standard size依赖于格式字符中指定的情况
  • 可以没有编码标识,默认为@

格式标识:

注意:

'IIII' = '4I' = '@4I'

https://blog.csdn.net/putiancaijunyu/article/details/86021969

具体使用实例请参考

 

参考文献

【1】https://docs.python.org/3/library/struct.html

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值