2

我在一个目录中有许多 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 文件的方法?有没有办法修复我的方法?

4

1 回答 1

1

您可以将ipythonh5py 模块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}
于 2016-10-25T08:03:18.023 回答