1. 什么是.bin文件
創(chuàng)新互聯(lián)建站是一家做網(wǎng)站、成都做網(wǎng)站,提供網(wǎng)頁設計,網(wǎng)站設計,網(wǎng)站制作,建網(wǎng)站,按需定制開發(fā),網(wǎng)站開發(fā)公司,從2013年成立是互聯(lián)行業(yè)建設者,服務者。以提升客戶品牌價值為核心業(yè)務,全程參與項目的網(wǎng)站策劃設計制作,前端開發(fā),后臺程序制作以及后期項目運營并提出專業(yè)建議和思路。擴展名為.bin的文件就是一個二進制文件(binary)。不同于文本文件,二進制文件用記事本、Notepad++等打開都是亂碼。
像是這樣:
但是.bin文件可以用WINHEX等軟件打開。二進制文件里面存儲的都是數(shù)據(jù),只有按照某個預先設定的規(guī)則讀出,才能明白這些數(shù)字的具體含義。
WINHEX將二進制文件內(nèi)容轉為十六進制的形式展現(xiàn)出來:
二進制文件相比于文本文件的優(yōu)點:節(jié)約存儲空間、讀寫速度快、有一定的加密保護作用。
關于二進制文件與文本文件,可以參考下這個博客程序員別唬我系列之:二進制文件
2. 二進制文件讀寫
2.1 讀二進制文件
讀二進制文件 “x.bin” 的內(nèi)容,每次輸出一個字節(jié)。
(1) 文件路徑放在filepath中,這里將.bin文件與代碼文件放在了同一個文件夾下,因此沒有寫絕對路徑。
(2) open(filepath, 'rb'):以讀的形式打開文件文件,注意使用 rb 來讀二進制文件。
(3) 記得close: binfile.close()
import struct
import os
if __name__ == '__main__':
filepath='x.bin'
binfile = open(filepath, 'rb') #打開二進制文件
size = os.path.getsize(filepath) #獲得文件大小
for i in range(size):
data = binfile.read(1) #每次輸出一個字節(jié)
print(data)
binfile.close()
運行,輸出結果:
如果想看到十進制的結果,可以使用python中的struct.unpack()方法:
struct.unpack('B', data):這里的參數(shù)B的含義是將C結構數(shù)據(jù)的unsigned char 類型轉為python中的integer
這里得到的num是tuple類型,因此使用num[0]將數(shù)字取出。
for i in range(size):
data = binfile.read(1)
num = struct.unpack('B', data)
print(num[0])
輸出結果為:
2.2 寫二進制文件
(1) 假設要把數(shù)字123寫入二進制文件,首先需要把數(shù)字int類型轉為bytes類型。
data.to_bytes(1, 'big'):參數(shù) ‘1’ :轉為1個字節(jié)的bytes; 參數(shù) 'big’ :byteorder。
查看某個變量a的類型,可以利用type()
a=123
print('a:',type(a))
b=a.to_bytes(1,'big')
print('b:',type(b))
輸出:無錫哪家醫(yī)院婦科好 http://www.csfk0731.com/
(2) open(filepath, 'ab+') :寫模式打開二進制文件。
寫入時注意:使用 ab+ 來完成追加寫入,使用 wb來完成覆蓋寫入。
(3) 關閉binfile.close()
data=123
content= data.to_bytes(1, 'big')
filepath='123.bin'
binfile = open(filepath, 'ab+') #追加寫入
binfile.write(content)
print('content',content)
binfile.close()
2.3 打開文件模式
列了下打開文件的不同模式,也就是open()里第二個參數(shù)。 帶b的參數(shù)表示操作二進制文件,不帶b的操作文本文件。
摘自Python文件讀寫(open(),close(),with open() as f…
模式 描述
r 以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認模式。
rb 以二進制格式打開一個文件用于只讀。文件指針將會放在文件的開頭。這是默認模式。
r+ 打開一個文件用于讀寫。文件指針將會放在文件的開頭。
rb+ 以二進制格式打開一個文件用于讀寫。文件指針將會放在文件的開頭。
w 打開一個文件只用于寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
wb 以二進制格式打開一個文件只用于寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
w+ 打開一個文件用于讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
wb+ 以二進制格式打開一個文件用于讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創(chuàng)建新文件。
a 打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內(nèi)容將會被寫入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進行寫入。
ab 以二進制格式打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內(nèi)容將會被寫入到已有內(nèi)容之后。如果該文件不存在,創(chuàng)建新文件進行寫入。
a+ 打開一個文件用于讀寫。如果該文件已存在,文件指針將會放在文件的結尾。文件打開時會是追加模式。如果該文件不存在,創(chuàng)建新文件用于讀寫。
ab+ 以二進制格式打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結尾。如果該文件不存在,創(chuàng)建新文件用于讀寫。
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。