Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何连接给定目录中的所有HDF5文件?_Python_Hdf - Fatal编程技术网

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

Python 如何连接给定目录中的所有HDF5文件?,python,hdf,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'), d

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

您可以与和工具结合使用

安装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}

这并不那么简单。看看这里和这里:我看过那个帖子,但不确定这个方法到底是如何工作的。你解决过这个问题吗?如果你有,你能发布一个自我回答吗?如果没有,你能解决它吗?