我有几个hdf文件,但我不知道如何在python中打开它们。当我尝试通过h5py.File(filename,'r')命令读取它时,它产生了一个OSError。
OSError: Unable to open file (file signature not found)
发布于 2022-01-26 16:07:31
HDF文件有两种类型。目前由HDF5维护的规范是HDF5。旧版本是HDF4,不再维护。这两种类型是完全不同的格式。
要区分这两个字节,您可以查看文件的前4个字节:
hf = open(filename, 'rb')
bts = hf.read(4)
if bts == b'\x89HDF':
print('HDF5')
elif bts == b'\x0e\x03\x13\x01':
print('HDF4')
HDF4头签名的含义是:
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兼容。
from netCDF4 import Dataset
ds = Dataset(filename, 'r')
https://stackoverflow.com/questions/70837908
复制相似问题