Python里虽然可以通过’b的标记来区别普通文件和二进制文件,但是依然是把二进制文件当作普通文本处理。要读写二进制文件,需要用struct库来作pack和unpack。
比如我最近拿到一个如下数据结构的二进制文件
Code
- structDEMTYPE{
- introw;
- intcol;
- floatxmin;
- floatymin;
- floatxmax;
- floatymax;
- floatsize;
- floatvmin;
- floatvmax;
- floatscale;
- float*data;
- };
其中data是一个长度为row*col的数组。要读取这样一个二进制文件,可以用这样的代码
Code
- row, col, xmin, ymin, xmax, ymax, size, vmin, vmax, scale =
- struct.unpack(<2i8f, datastring[:(4*2+4*8)])
- vdata =struct.unpack(<+str(row*col)+f, datastring[(4*2+4*8):])
联系客服