我有以下结构的文件:
我希望使用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:无法创建链接(名称已存在)”。
有没有办法追加到这些团体?
您可以根据需要多次写入数据集 - 您只能拥有两次具有相同名称的数据集。这是你得到的错误。请注意,您正在创建数据集,同时将一些数据放入其中。为了向其写入其他数据,它必须足够大以容纳它。
无论如何,我相信你是混淆组和数据集。使用例如创建组
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'参数创建所需的组和数据集,以正确调整其大小,然后使用实际数据填充数据集。