诋的读音:Python读取二进制文件 --- webpro程序爱好者 asp,asp.net,jav...

来源:百度文库 编辑:九乡新闻网 时间:2024/04/27 15:35:06
Python读取二进制文件





Python里虽然可以通过’b的标记来区别普通文件和二进制文件,但是依然是把二进制文件当作普通文本处理。要读写二进制文件,需要用struct库来作pack和unpack。

比如我最近拿到一个如下数据结构的二进制文件

Code
  1. structDEMTYPE{
  2. introw;
  3. intcol;
  4. floatxmin;
  5. floatymin;
  6. floatxmax;
  7. floatymax;
  8. floatsize;
  9. floatvmin;
  10. floatvmax;
  11. floatscale;
  12. float*data;
  13. };

其中data是一个长度为row*col的数组。要读取这样一个二进制文件,可以用这样的代码
Code

  1. row, col, xmin, ymin, xmax, ymax, size, vmin, vmax, scale =
  2. struct.unpack(<2i8f, datastring[:(4*2+4*8)])
  3. vdata =struct.unpack(<+str(row*col)+f, datastring[(4*2+4*8):])

核心是unpack的第一个参数,用来标识二进制数据的格式,其中<表示little-endian,i表示整型数,f表示单精度浮点数,数字是量词。