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
- это быстрое решение, но рискованное, если ваша программа не всегда знает, существует ли файл уже. Вы можете добиться любого желаемого поведения менее неоднозначным способом, используя другие режимы наряду с проверкой файлов.