我有以下结构的文件:
我希望使用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:无法创建链接(名称已存在)”。
有没有办法附加到群组?
答案 0 :(得分: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)来引用它们,以便写入它们。
我建议您先浏览一下文件,然后使用'形状创建所需的群组和数据集。参数以正确调整大小,然后使用实际数据填充数据集。