附加到h5py组

问题描述 投票:1回答:1

我有以下结构的文件:

  • 时间1
  • 指数1
  • 价值x
  • 价值和
  • 时间1
  • 指数2
  • 价值x
  • 价值和
  • 时间2
  • 指数1
  • ...

我希望使用h5py将文件转换为hdf5格式,并将每个索引的值排序为单独的组。

我的方法是

f = h5py.File(filename1,'a')
trajfile = open(filename2, 'rb')

    for i in range(length_of_filw):
        time = struct.unpack('>d', filename2.read(8))[0]
        index = struct.unpack('>i', filename2.read(4))[0]       
        x = struct.unpack('>d', filename2.read(8))[0]
        y = struct.unpack('>d', filename2.read(8))[0]

        f.create_dataset('/'+str(index), data=[time,x,y,z])

但是通过这种方式,我无法附加到群组中(我只能写入每个群组一次......)。错误消息是“RuntimeError:无法创建链接(名称已存在)”。

有没有办法追加到这些团体?

python python-2.7 hdf5 h5py
1个回答
1
投票

您可以根据需要多次写入数据集 - 您只能拥有两次具有相同名称的数据集。这是你得到的错误。请注意,您正在创建数据集,同时将一些数据放入其中。为了向其写入其他数据,它必须足够大以容纳它。

无论如何,我相信你是混淆组和数据集。使用例如创建组

grp = f.create_group('bar') # this create the group '/bar'

并且您希望将数据集存储在数据集中,就像您所说的那样创建:

dst = f.create_dataset('foo',shape=(100,)) # this create the dataset 'foo', with enough space for 100 elements.

你只需要创建一次组和数据集 - 但你可以通过它们的句柄(grp和dst)来引用它们,以便写入它们。

我建议您先浏览一下文件,使用'shape'参数创建所需的组和数据集,以正确调整其大小,然后使用实际数据填充数据集。

© www.soinside.com 2019 - 2024. All rights reserved.