7

我有想要使用 Python 模块 h5py(在 Python 2.7 中)打开的 HDF5 文件。

当我有一个包含组和数据集的文件时,这很容易:

import h5py as hdf

with hdf.File(relative_path_to_file, 'r') as f:
    my_data = f['a_group']['a_dataset'].value

但是,在我目前的情况下,我没有组。只有数据集。不幸的是,无论我尝试什么,我都无法访问我的数据。以下都不起作用(全部与 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()
[]
4

3 回答 3

4

我发现了这个问题,我认为这是 h5py 应该解决的问题。

问题(我最初忘记在问题中详细说明,现在已编辑)是我使用相对文件路径打开 hdf5 文件。当我使用绝对文件路径时,一切正常。

可悲的是,这会给我带来麻烦,因为我的代码打算在不同的机器上可移植地运行......

感谢 gspr 和 jimmyb 的帮助 :-)

于 2015-02-16T18:48:56.210 回答
2

当我使用相对路径时它工作得很好。

来写:

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
于 2016-03-04T18:26:46.670 回答
1

我认为这应该有效:

f['.']['a_dataset']

你可能会尝试这样做:

dir(f['/']) 
dir(f['.'])
于 2015-02-16T18:15:57.513 回答