首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >hdf5文件与hdf文件不同吗?

hdf5文件与hdf文件不同吗?
EN

Stack Overflow用户
提问于 2022-01-24 17:22:43
回答 1查看 821关注 0票数 0

我有几个hdf文件,但我不知道如何在python中打开它们。当我尝试通过h5py.File(filename,'r')命令读取它时,它产生了一个OSError。

代码语言:javascript
运行
复制
OSError: Unable to open file (file signature not found)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-26 16:07:31

HDF文件有两种类型。目前由HDF5维护的规范是HDF5。旧版本是HDF4,不再维护。这两种类型是完全不同的格式。

要区分这两个字节,您可以查看文件的前4个字节:

代码语言:javascript
运行
复制
hf = open(filename, 'rb')
bts = hf.read(4)
if bts == b'\x89HDF':
   print('HDF5')
elif bts == b'\x0e\x03\x13\x01':
   print('HDF4')

HDF4头签名的含义是:

代码语言:javascript
运行
复制
b''.join([(x+64).to_bytes(1, 'big') for x in list(b'\x0e\x03\x13\x01')])

返回为国家超级计算应用中心( HDF格式的发明者)保留的b'NCSA'

b'\x89HDF'是8字节HDF5签名b'\x89HDF\x0d\x0a\x1a\x0a'的前4个字节.字母HDF标识文件格式,还有其他不可打印的字符,以确保HDF5文件易于识别。

要读取HDF5文件,可以使用HDF支持的h5py模块。对于HDF4文件,有许多Python绑定到HDF低级接口。

美国宇航局PyHDF已经有一段时间没有更新了。它不仅支持通用的HDF4文件,还支持美国宇航局自己的HDF扩展.

Unidata NetCDF4库维护NetCDF3兼容性,NetCDF3与HDF4兼容。

代码语言:javascript
运行
复制
from netCDF4 import Dataset
ds = Dataset(filename, 'r')
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70837908

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档