只討論二進位制檔案的讀寫。
以二進位制的形式開啟檔案
wb:表示以二進位制寫的方式開啟檔案with
open(filename , 'wb') as fd :
#do with fd
fd.write(strobject)#二進位制strobject寫入檔案
fd.read(byte_len)#讀取byte_len位元組資料
rb:表示以二進位制讀的方式開啟檔案
需要使用到struct進行打包成二進位制字串或者相應的解包成元組。
#根據format形式,把後面的變數v1,v2,...打包成位元組物件形式
byte_objects = struct.pack(format,v1,v2,...)
#根據format形式,從buffer中解包出資料,返回值的形式是元組
value_tuple = struct.unpack(format,buffer)
關於c/c++裡面的資料型別在python裡面對應的資料型別以及占用的位元組大小,參考下面的**。#寫入檔案
with open('test.data','wb') as fd:
i = 1
bi = struct.pack('i',i) #'i'表示對int型別進行打包
fd.write(bi)
f = 2.1
bf = struct.pack('f',f) #'f'表示對float型別進行打包
fd.write(bf)
d = 3.1
bd = struct.pack('d',d) #'d'表示對double型別進行打包
fd.write(bd)
l = 4l
bl = struct.pack('l',l)#'l'表示對long型別進行打包
fd.write(bl)
#讀取檔案
with open('test.data','rb') as fd:
byte_len = 4
bi = fd.read(byte_len) #讀取int型別的4個位元組的二進位制資料
print struct.unpack('i',bi) #解壓成原來的int型別
bf = fd.read(byte_len) #讀取float型別的4個位元組的二進位制資料
print struct.unpack('f',bf) #解壓成原來的float型別
byte_len = 8
bd = fd.read(byte_len) #讀取double型別的8個位元組的二進位制資料
print struct.unpack('d',bd) #解壓成原來的double型別
bl = fd.read(byte_len) #讀取long型別的8個位元組的二進位制資料
print struct.unpack('l',bl)#解壓成原來的long型別
/**c++ ifstream**/
void readifstream(const
char* filename)
int i;
float f;
double d;
long l;
ifs.read((char*)&i,sizeof(i));
ifs.read((char*)&f,sizeof(f));
ifs.read((char*)&d,sizeof(d));
ifs.read((char*)&l,sizeof(l));
ifs.close();
cout <<"i="
<< i << " f="
<< f <<" d="
<< d <<" l="
<< l << endl;
cout << "**********====cout********************=="
<< endl;
}/**c file*/
void readfile(const
char* filename)
const
int size = 1;
int i;
float f;
double d;
long l;
fread((char*)&i,sizeof(i),size,fid);
fread((char*)&f,sizeof(f),size,fid);
fread((char*)&d,sizeof(d),size,fid);
fread((char*)&l,sizeof(l),size,fid);
fclose(fid);
printf("i=%d f=%.2f d=%.2lf l=%ld\n",i,f,d,l);
printf( "***************=printf********************\n");
}
二進位制檔案 讀檔案
1.二進位制讀檔案主要是利用流物件呼叫成員函式read 2.函式原型 ifstream read char buffer,int len 引數解釋 字元指標buffer指向記憶體中一段儲存空間,len是讀寫的位元組數 include include includeusing namespace st...
python怎麼讀二進位制檔案?
實際專案中經常遇到讀取二進位制問題,python下讀取二進位制檔案一般用python的檔案開啟讀寫相關函式和struct.1。獲取檔名filename,可用對話方塊,也可以直接手寫 2。開啟檔案,這裡中是開啟,像看書一樣,只是開啟書,還沒有看裡面的內容,可以看,也可以不看 binfile open ...
二進位制檔案
本質上是文字檔案是把檔案資訊先轉化成以字元編碼的ascii碼,再儲存ascii的二進位制 而二進位制檔案是直接把檔案資訊編碼成二進位制儲存。因此在讀取的時候要考慮記憶體中二進位制 應該怎麼樣解釋。二進位制檔案的讀取是是要告訴元素的型別 編碼方式 文字檔案則預設為char型別。文字檔案是一種特殊的二進...