4
對不起,如果這是一個關於h5py的基本問題。如何在不覆蓋的情況下寫入hdf5文件?
我正在閱讀文檔,但沒有找到類似的例子。
我想在Python上創建多個hdf5數據集,但事實證明我關閉文件後數據將被覆蓋。
比方說,我做到以下幾點:
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上?
你能嘗試重新啓動的Python(或IDE),確保所有文件被關閉。我假設您的第一次嘗試將文件打開,因爲它退出時出現異常。 – Daniel
所以你基本上不想以''a''模式打開文件?還是我理解你錯誤地質疑? –
@Daniel我在得到異常後關閉文件。我試圖找到一種方法來使用同一行來編寫和追加數據。 – ilciavo