簡體   English   中英

使用python從二進制文件中讀取數字數據

[英]Read numeric data from binary file using python

我想讀取一個二進制數據文件,其中包含標題部分(文本),然后是數字數組。 我可以使用f.read(block_size)在標題部分保持流式傳輸,但讀取數值數組的最佳方法是什么?

在MatLab,我能做到

fid = fopen(data_file_name, 'rb');
line = fread(fid, block_size, '*char'); 
data = fread(fid, 'long');

在Python中,我所做的是

f = open(data_file_name, 'rb')
header = f.read(block_size)

從這里我不知道如何到達數字數組。

您可以使用struct.unpack來解壓縮數字數據。

例如

with open('file','rb') as fin:
    header = fin.read(header_size)
    data_str = fin.read(num_data_bytes)
    data_tuple = struct.unpack('100f',data_str)  #100 4-byte floats

根據數據,您可以使用numpy.fromfile其直接讀取到numpy數組。 該函數接受一個打開的文件對象,因此您可以讀取標題然后傳遞打開的文件對象,因此numpy可以讀取數據。 這個問題中 ,我詢問了將字符串中的二進制數據讀入numpy數組的詳細信息。 這是一個稍微不同的問題,但是大部分答案也適用於此(如何指定字節順序等)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM