使用python读取二进制文件,同时了解格式和维度

2024-04-16 09:32:28 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图读取一个二进制文件(float32),其中包含一个格式为little endian的变量。你知道吗

这个二进制应该给出一个三维变量的尺寸(84801440)。 应该没有头,因为它是在另一个文件中给出的。你知道吗

在努力阅读二进制文件并尝试这里看到的不同解决方案之后,我终于能够运行我的脚本了。但是输出并不像预期的那样(点的错误分布),这让我觉得有些地方出了问题,尽管我不知道在哪里。你知道吗

下面是运行但未给出预期结果的代码的一个最小示例:

filename=["CMORPH_3HLY_19980102"]
with open(filename[0], mode='rb') as file: 
        fileContent = file.read()

data=struct.unpack("f" * (len(fileContent) // 4), fileContent)

nvar  = 1                                    
ntim  = 8
nlat  = 480
mlon  = 1440
data_ok=np.array(data)

cmorph=data_ok.reshape((mlon,nlat,nvar*ntim)).transpose()

我想问题出在解包结构但是,由于我不太熟悉二进制格式和二进制文件,我不知道如何解决这个问题。 任何帮助和/或解释将不胜感激!你知道吗


Tags: 文件data格式二进制okfilenamefilefloat32
1条回答
网友
1楼 · 发布于 2024-04-16 09:32:28

多亏了斯托夫,我解决了这个问题。下面是组合np.fromfilereshape的代码。你知道吗

cmorph = np.fromfile(file,type=np.float32,count=nvar*ntim*nlat*mlon)).reshape((nvar*ntim,nlat,mlon))

相关问题 更多 >