如何连接给定目录中的所有HDF5文件?

时间:2014-07-03 19:09:13

标签: python hdf

我在目录中有很多HDF5文件,我想连接所有这些文件。我尝试了以下方法:

from glob import iglob
import shutil
import os

PATH = r'C:\Dropbox\data_files'

destination = open('data.h5','wb')
for filename in iglob(os.path.join(PATH, '*.h5')):
    shutil.copyfileobj(open(filename, 'rb'), destination)
destination.close()

但是,这只会创建一个空文件。每个HDF5文件都包含两个数据集,但我只关心第二个数据集(每个数据集中的名称相同)并将其添加到新文件中。

是否有更好的连接HDF文件的方法?有没有办法修复我的方法?

1 个答案:

答案 0 :(得分:0)

您可以将ipythonh5py moduleh5copy工具结合使用。

安装h5copy ahd h5py后,只需打开存储所有.h5文件的文件夹中的ipython控制台,并使用此代码将它们合并到output.h5文件中:

import h5py
import os 
d_names = os.listdir(os.getcwd())
d_struct = {} #Here we will store the database structure
for i in d_names:
   f = h5py.File(i,'r+')
   d_struct[i] = f.keys()
   f.close()

for i in d_names:
    for j  in d_struct[i]:
          !h5copy -i '{i}' -o 'output.h5' -s {j} -d {j}