Python 二進位制檔案讀取

2021-10-01 12:51:40 字數 1313 閱讀 4171

其實對於檔案單純的讀取還是非常好解決的。只要使用如下語句即可把檔案讀取出到變數temp中:

如果對open函式的引數mode不熟悉,可以查閱:

此處我們需要以二進位制方式讀取該檔案,因此mode=『rb'

with open(filename, mode='rb') as file:

temp = file.read()

file.close()

但是這樣讀出的temp是乙個二進位制串,類似:

\x00\x06\xa7@\x00\x00\x00\x00\x00`\xa5

因此我們還需要對結果進行unpack操作。

在python的struct庫中提供了方法unpack,它可以將二進位制串以自定的形式轉換成使用者想要的字串。

您可以檢視官方文件以獲取更多資訊。

但在此處,我們已知我們的資料是以float型別,小端方式儲存的,因此編寫出來的程式如下:

data = struct.unpack("<" + "d" * (len(temp) // 8), temp[:])
其中,"<"代表以小端方式解構;

「d" * (len(temp) // 8)代表構造出temp // 8 大小的快取區,且這個快取區的格式是」dd····d「,即全為float型別的資料,unpack()函式會以此快取區的格式對二進位制資料進行解構。

至此檔案讀取和轉碼均已完成,如果您要解碼的檔案格式有所不同,請根據unpack()官方文件查詢相應引數並修改。

import struct

def load_binary_file(filename):

"""用於讀取二進位制檔案的函式

"""# 二進位制檔案,讀取使用rb

with open(filename, mode='rb') as file:

temp = file.read()

file.close()

# 使用unpack函式將二進位制資料轉碼,注意使用的讀取是小端儲存的,而且是double型別8位元組轉碼

data = struct.unpack("<" + "d" * (len(temp) // 8), temp[:])

return data

注:該函式只能對檔案內全是float資料的二進位制檔案使用,如格式不對,請修改

data = struct.unpack("<" + "d" * (len(temp) // 8), temp[:])
之後便可以使用輸出的data進行資料處理操作了。

本人也是第一次寫博文,如有不足,還請指教。

Python 二進位制檔案讀取顯示

filename raw input enter file name f open filename,rb f.seek 0,0 index 0 for i in range 0,16 print 3s hex i print for i in range 0,16 print 3s print w...

Python 二進位制檔案讀取顯示

python view plain copy filename raw input enter file name f open filename,rb f.seek 0,0 index 0 fori inrange 0,16 print 3s hex i print fori inrange 0,...

c c讀取二進位制檔案

因專案需要讀取二進位制檔案,一開始用c 讀取,c 下用的是ifstream類,完整 如下 ifstream in b3dmpath.c str ios in ios binary in.seekg 0,ios end size t filesize in.tellg in.seekg ios beg...