我在目录中有很多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文件的方法?有没有办法修复我的方法?
答案 0 :(得分:0)
您可以将ipython与h5py module和h5copy工具结合使用。
安装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}