Python里雖然可以通過’b的標記來區(qū)別普通文件和二進制文件,但是依然是把二進制文件當作普通文本處理。要讀寫二進制文件,需要用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):])