2015-06-26 10 views
2
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 и записывает два массива под ключ1 и ключ2 соответственно.H5py: повторное открытие файла в режиме записи удаляет предыдущие данные

Однако закрытие файлового объекта и повторное открытие файла удаляют ранее сохраненные данные.

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() 

В этом случае только [4,5,6] хранится под ключом key2.

Как заново открыть файл и записать новые данные без удаления старых данных, которые уже сохранены?

+2

Вы пробовали режим присоединения? – hpaulj

ответ

3

Быстрый ответ

Изменение h5py.File('test','w') в h5py.File('test','a') (или h5py.File('test'), который по умолчанию последнего).

Почему

При создании экземпляра h5py.File объекта, вы должны указать mode в качестве второго параметра. Это должно быть одно из следующих действий:

  • r Readonly, файл должен существовать
  • r+ чтения/записи, файл должен существовать
  • w Создать файл, усечение, если существует
  • w- или x Создать файл, если существует
  • a Чтение/запись, если существует, создать другое (по умолчанию)

Использование a - быстрое решение, но опасно, если ваша программа не всегда знает, существует ли файл уже. Вы можете добиться любого желаемого поведения менее двусмысленным способом, используя другие режимы наряду с проверкой файлов.

Смежные вопросы