H5py: повторное открытие файла в режиме записи удаляет предыдущие данные
import h5py
import numpy as np
f = h5py.File('test','w')
f.create_dataset('key1', data = np.array([1,2,3]))
f.create_dataset('key2', data = np.array([4,5,6]))
f.close()
Создает файл с именем test и записывает два массива под ключами key1 и key2 соответственно.
Однако при закрытии объекта file и повторном открытии файла ранее сохраненные данные удаляются.
f = h5py.File('test','w')
f.create_dataset('key1', data = np.array([1,2,3]))
f.close()
f = h5py.File('test','w')
f.create_dataset('key2', data = np.array([4,5,6]))
f.close()
В этом случае под ключом key2 хранится только [4,5,6].
Как снова открыть файл и записать новые данные, не удаляя старые данные, которые уже хранятся?
1 ответ:
Быстрый ответ
Измените
h5py.File('test','w')наh5py.File('test','a')(илиh5py.File('test'), что по умолчанию соответствует последнему).Почему
Когда вы создаете экземпляр объекта
h5py.File, Вы должны указатьmodeв качестве второго параметра. Это должно быть одно из следующих:
rтолько для чтения, файл должен существоватьr+чтение / запись, файл должен существоватьwсоздать файл, усечь, если он существуетw-илиxсоздать файл, ошибка, если существуетaЧтение / запись, если существует, создать в противном случае (по умолчанию)Использование
a- это быстрое решение, но рискованное, если ваша программа не всегда знает, существует ли файл уже. Вы можете добиться любого желаемого поведения менее неоднозначным способом, используя другие режимы наряду с проверкой файлов.