Добавить hdf5 в другой файл hdf5 - PullRequest
3 голосов
/ 26 мая 2020

У меня есть несколько файлов hdf5 одинаковой формы, содержащих столбцы x и y. Мне нужно добавить их, чтобы получить один файл hdf5, содержащий все данные.

Мой код на данный момент:

def append_to_h5(new_file, file_list):
    f = h5py.File(new_file, 'a')
    for file in file_list:
        with h5py.File(file, 'r') as d:
            f.create_dataset("./", data=d)
    f.close()

#new_file <- is a file path to the new hdf5 file
#file_list <- contains all the pathes of the hdf5 files, which I want to append

Ошибка

   in make_new_dset tid = h5t.py_create(dtype, logical=1)
  File "h5py/h5t.pyx", line 1634, in h5py.h5t.py_create
  File "h5py/h5t.pyx", line 1656, in h5py.h5t.py_create
  File "h5py/h5t.pyx", line 1717, in h5py.h5t.py_create
TypeError: No conversion path for dtype: dtype('<U1')

Любые идеи ценятся Спасибо

1 Ответ

0 голосов
/ 27 мая 2020

Это более подробно описано в других ответах SO. Я создал небольшой пример, чтобы вы начали. Основным изменением было добавление al oop для поиска и копирования наборов данных верхнего уровня (только). Предполагается, что конфликтов имен наборов данных не будет, и необходимо использовать тесты для общего случая. Кроме того, я изменил имена переменных вашего файлового объекта.

def append_to_h5(new_file, file_list):
    f1 = h5py.File(new_file, 'a')
    for file in file_list:
        with h5py.File(file, 'r') as f2:
            for ds in f2.keys():
                f2.copy(ds, f1) 
    f1.close()

#new_file <- is a file path to the new hdf5 file
#file_list <- contains all the pathes of the hdf5 files, which I want to append
...