如何使用 h5py 读取只有数据集(没有组)的 HDF5 文件?
How to read HDF5 files that have only datasets (no groups) using h5py?
我有 HDF5 文件,我想使用 Python 模块 h5py(在 Python 2.7 中)打开这些文件。
当我有一个包含组和数据集的文件时,这很容易:
import h5py as hdf
with hdf.File(relative_path_to_file, 'r') as f:
my_data = f['a_group']['a_dataset'].value
但是,以我目前的情况,我没有群。只有数据集。不幸的是,无论我尝试什么,我都无法访问我的数据。 None 以下工作(全部因 KeyErrors 或 ValueErrors 而中断):
my_data = f['a_dataset'].value #KeyError
my_data = f['/a_dataset'].value #KeyError
my_data = f['/']['a_dataset'].value #KeyError
my_data = f['']['a_dataset'].value #ValueError
my_data = f['.']['a_dataset'].value #KeyError
如果没有解决方案,我可以重新制作我的文件以进行分组。看起来确实应该有一个解决方案,但是...
h5py 似乎没有看到任何键:
f.keys()
[]
我认为这应该可行:
f['.']['a_dataset']
你可能会尝试这样做:
dir(f['/'])
dir(f['.'])
我发现了这个问题,我认为这是 h5py 应该解决的问题。
问题(我最初忘记在问题中详细说明,现在已编辑)是我用 relative 文件路径打开 hdf5 文件。当我使用 absolute 文件路径时,一切正常。
遗憾的是,这会给我带来麻烦,因为我的代码旨在 运行 可移植地在不同的机器上...
感谢 gspr 和 jimmyb 的帮助:-)
当我使用相对路径时它工作正常。
要写:
fileName = "data/hdf5/topo.hdf5"
with h5py.File(fileName, 'w') as f:
dset = f.create_dataset('topography', data = z, dtype = 'float32')
读取数据:
with h5py.File(fileName, 'r') as f:
my_data = f['.']['topography'].value
我有 HDF5 文件,我想使用 Python 模块 h5py(在 Python 2.7 中)打开这些文件。
当我有一个包含组和数据集的文件时,这很容易:
import h5py as hdf
with hdf.File(relative_path_to_file, 'r') as f:
my_data = f['a_group']['a_dataset'].value
但是,以我目前的情况,我没有群。只有数据集。不幸的是,无论我尝试什么,我都无法访问我的数据。 None 以下工作(全部因 KeyErrors 或 ValueErrors 而中断):
my_data = f['a_dataset'].value #KeyError
my_data = f['/a_dataset'].value #KeyError
my_data = f['/']['a_dataset'].value #KeyError
my_data = f['']['a_dataset'].value #ValueError
my_data = f['.']['a_dataset'].value #KeyError
如果没有解决方案,我可以重新制作我的文件以进行分组。看起来确实应该有一个解决方案,但是...
h5py 似乎没有看到任何键:
f.keys()
[]
我认为这应该可行:
f['.']['a_dataset']
你可能会尝试这样做:
dir(f['/'])
dir(f['.'])
我发现了这个问题,我认为这是 h5py 应该解决的问题。
问题(我最初忘记在问题中详细说明,现在已编辑)是我用 relative 文件路径打开 hdf5 文件。当我使用 absolute 文件路径时,一切正常。
遗憾的是,这会给我带来麻烦,因为我的代码旨在 运行 可移植地在不同的机器上...
感谢 gspr 和 jimmyb 的帮助:-)
当我使用相对路径时它工作正常。
要写:
fileName = "data/hdf5/topo.hdf5"
with h5py.File(fileName, 'w') as f:
dset = f.create_dataset('topography', data = z, dtype = 'float32')
读取数据:
with h5py.File(fileName, 'r') as f:
my_data = f['.']['topography'].value