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

     

format格式

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

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

python开发---python处理binary文件_第1张图片

注意:

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

格式标识:

python开发---python处理binary文件_第2张图片

注意:

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

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

具体使用实例请参考

 

参考文献

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

你可能感兴趣的:(深度学习,深度学习)