Извините, если это очень простой вопрос на h5py.Как написать hdf5 файлы без перезаписи?
Я читал документацию, но не нашел подобного примера.
Я пытаюсь создать несколько наборов данных hdf5 на Python, но, оказывается, после закрытия файла данные будут перезаписаны.
Допустим, я делаю следующее:
import numpy as np
import h5py
f = h5py.File('test.hdf5', 'w')
f.create_dataset('data1', data = np.ones(10))
f.close()
f = h5py.File('test.hdf5', 'w')
f.create_dataset('data0', data = np.zeros(10))
f.close()
f = h5py.File('test.hdf5', 'r')
f["data1"].value
f.close()
Я получаю
KeyError: "Unable to open object (Object 'data1' doesn't exist)"
Если я добавить данные, которые требуется первое отверстие в режиме 'w'
, а затем добавление в режиме 'a'
, имея два разных заявления ,
import numpy as np
import h5py
f = h5py.File('test.hdf5', 'w')
f.create_dataset('data1', data = np.ones(10))
f.close()
f = h5py.File('test.hdf5', 'a')
f.create_dataset('data0', data = np.zeros(10))
f.close()
f = h5py.File('test.hdf5', 'r')
f["data1"].value
f.close()
Если открыть файл в режиме 'a'
в обоих случаях:
import numpy as np
import h5py
f = h5py.File('test.hdf5', 'a')
f.create_dataset('data1', data = np.ones(10))
f.close()
f = h5py.File('test.hdf5', 'a')
f.create_dataset('data0', data = np.zeros(10))
f.close()
f = h5py.File('test.hdf5', 'r')
print(f['data1'].value)
f.close()
RuntimeError: Unable to create link (Name already exists)
Согласно документации, данные должны храниться смежно, но я не нашел, как избежать перезаписи данные.
Как хранить данные на ранее закрытом hdf5 только с помощью одного заявления?
Может попробовать перезапустить питон (или ваш IDE), чтобы убедиться, что все файлы закрыты. Я предполагаю, что ваша первая попытка оставила файл открытым, потому что он вышел из исключения. – Daniel
Итак, вы в основном не хотите открывать файл в '' a'' режиме? Или я понимаю вас неправильно? –
@ Daniel Я закрываю файл после получения исключения. Я пытаюсь найти способ использовать одну и ту же строку для записи и добавления данных. – ilciavo