[英]DidThe existing group or dataset be cleaned when opening and writing h5 file using h5py?
[英]Only the last saved dataset exists when using h5py
我正在嘗試通過 h5py 模塊將幾個數據集保存到 hdf5 文件中,但似乎只保存了最后一個。 我認為這是因為添加了 break 語句時,而是保存了第一個數據集。
問題代碼如下。 我該如何解決?
set_num = 0
for cur in data["init"]:
'''
got result as a list
'''
ipt = h5py.File(output_file, "w")
s = str(set_num)
ipt[s] = result
'''
create an attribute for ipt[s]
'''
set_num += 1
ipt.close()
#break
如果有任何愚蠢的錯誤,我深表歉意。
您在for:
循環的每次傳遞中打開、關閉文件,並且您將屬性設置為"w"
,這意味着它在每次傳遞期間都會覆蓋現有文件。
我的建議是使用with
子句打開文件,並在其中嵌套for:
循環,這將使意圖更清晰,並且無需顯式關閉文件。 這個例子可能會有所幫助(雖然它沒有經過測試,所以可能需要修改):
with h5py.File(output_file, "w") as ipt:
for set_num, curr in enumerate(data["init"]):
s = str(set_num)
ipt[s] = result
您只能獲得最后一個數據集,因為您在循環內以寫入模式('w')
打開文件。 簡單的解決方案是使用附加模式( a')
。 更好的是,將文件移到循環外打開並使用with...as:
上下文管理器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.