簡體   English   中英

使用 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM