Я пытаюсь записать наборы данных в файл h5 следующим образом:
fpath = 'path-to-/data.h5'
with h5py.File(fpath,'w') as hf:
hf.create_dataset('a', data=a)
Затем я добавляю файл с дополнительными данными в том же коде:
with h5py.File(fpath,'a') as hf:
dset = hf.create_dataset('b',(nrow,1),maxshape=(nrow,None),chunks=(nrow,1))
for i in range(ncol):
dset[:,-1:] = b
if i+1 < ncol:
dset.resize(dset.shape[1]+1,axis=1)
Я получаю следующую ошибку в отношении второй операции (добавление):
OSError: Unable to create file (unable to open file: name = 'path-to-/data.h5',
errno = 2, error message = 'Aucun fichier ou dossier de ce type',
flags = 13, o_flags = 242)
Когда я проверяю каталог, файл path-to-/data.h5
существует, но без добавленных наборов данных (проверяется с помощью list(hf.keys())
).
Чтобы все это работало, в настоящее время я пишу все за один шаг и не использую оператор with
(как предложено в вопросе EDIT здесь ).
hf = h5py.File(fpath,'w')
hf.create_dataset('a', data=a)
dset = hf.create_dataset('b',(nrow,1),maxshape=(nrow,None),chunks=(nrow,1))
for i in range(ncol):
dset[:,-1:] = b
if i+1 < ncol:
dset.resize(dset.shape[1]+1,axis=1)
hf.close()
Здесь также, если я удаляю записанный файл и снова запускаю код, он выдает ту же ошибку, что и выше, и запускается, только когда я изменяю имя файла (например, «data_1.h5»).Я не понимаю эту часть, так как ожидал, что операция h5py.File(fpath,'w')
будет независима от существования или отсутствия файла.
Подводя итог, я нашел единственный способ заставить код работать:используя второй подход (запись без добавления) и не изменяйте сгенерированный файл (переименование или перемещение).
Я не смог найти его здесь , но есть ли способпринудительно написать и добавить файл h5 независимо от его существования или предыдущих вызовов?