如何使用python合并多个.h5文件(但形状相同)?

时间:2018-10-24 00:06:27

标签: python hdf5 point-clouds h5py

如何使用python合并多个.h5文件(但形状相同)?

我有10,000个.h5文件用于3D点云。

它们具有相同的形状。

我想合并(或合并)2000个文件,所以我总共可以有5个大的.h5文件。 (例如python中的append()函数)

我从h5py(http://docs.h5py.org/en/latest/high/group.html)找到了copy()函数。

但是,我无法将这种方法应用于我的问题。

请参考示例代码或帮助我解决问题。

对不起,我的英语水平很差。

1 个答案:

答案 0 :(得分:0)

您可以简单地执行以下操作(未经测试但应该可以):

import h5py

def copy(dest, name):
    g = dest.require_group(name)  # create output group with the name of input file
    def callback(name, node):
        if isinstance(node, h5py.Dataset):  # only copy dataset
            g.create(name, data=node[:])

with h5py.File('out.h5', 'w') as h5_out:
    for f_in in files:
        with h5py.File(f_in, 'r') as h5_in:
                h5_in.visititems(copy(h5_out, f_in))

这将为每个文件创建一个“文件夹”(HDF5组)并递归复制所有内容。

另请参阅:related question