2015-06-26 69 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的文件,並分別在key1和key2下面寫入兩個數組。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只讀,文件必須存在
  • r+讀/寫操作,文件必須存在
  • w創建文件,截斷如果存在
  • w-x創建文件,如果存在,則失敗
  • a如果存在,則讀取/寫入,否則創建(默認)

使用a是一種快速修復方法,但是如果您的程序並不總是知道文件是否已經存在,那麼就很危險。您可以通過使用其他模式以及文件檢查以較不明確的方式實現任何所需的行爲。