在python中读取具有混合数据类型的未知大小的二进制文件

mcE*_*nge 4 python

我需要读取二进制文件,该文件由19个float32数字组成,后跟一个未知数量的uint32数字。我如何在python中读取这样的文件?

在Matlab中,等效项如下所示:

fid = fopen('myFile.bin','r');
params = fread(fid,19,'float');
data = fread(fid,'uint32');
fclose(fid);
Run Code Online (Sandbox Code Playgroud)

AGN*_*zer 6

使用numpy.fromfile()方法,并向文件传递带有相应数量的要读取的项目的句柄。

import numpy as np
with open('myFile.bin', 'rb') as f:
    params = np.fromfile(f, dtype=np.float32, count=19)
    data = np.fromfile(f, dtype=np.int32, count=-1) # I *assumed* here your ints are 32-bit
Run Code Online (Sandbox Code Playgroud)

如果要获取标准的Python列表而不是数组,请延迟.tolist()fromfile()(像这样的np.fromfile(...).tolist())结束括号numpy