【问题标题】:Read numeric data from binary file using python使用python从二进制文件中读取数字数据
【发布时间】:2013-03-23 22:15:39
【问题描述】:

我想读取一个包含标题部分(文本)和数字数组的二进制数据文件。我可以使用 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)

从这里我不知道如何进入数字数组。

【问题讨论】:

    标签: python file-io binary


    【解决方案1】:

    您可以使用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 可以读取数据。在this question 中,我询问了将二进制数据从字符串读取到 numpy 数组的细节。这是一个稍微不同的问题,但那里的大部分答案也适用于此(如何指定字节顺序等)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-27
      • 2015-04-23
      • 2018-01-16
      • 1970-01-01
      • 1970-01-01
      • 2022-01-06
      • 2011-11-22
      相关资源
      最近更新 更多