該gdbm模塊已被重命名為(wèi)dbm.gnuPython 3. 當将源代碼轉換為(wèi)Python 3時(shí),2to3工(gōng)具将自(zì)動适應導入。
這(zhè)個模塊與模塊非常相似dbm,但(dàn)是gdbm用來提供一(yī)些附加功能(néng)。請(qǐng)注意,由gdbm和(hé)創建的文件格式dbm不兼容。
該gdbm模塊為(wèi)GNU DBM庫提供了(le)一(yī)個接口。gdbm對象的行(xíng)為(wèi)就像映射(字典),除了(le)鍵和(hé)值總是字符串。打印gdbm對象不會打印鍵和(hé)值,并且不支持items()和(hé)values()方法。
該模塊定義了(le)以下(xià)常量和(hé)功能(néng):
exception gdbm.error
引發gdbm特定的錯誤,例如(rú)I / O錯誤。KeyError引發一(yī)般映射錯誤,如(rú)指定不正确的鍵。
gdbm.open(filename[, flag[, mode]])
打開(kāi)一(yī)個gdbm數(shù)據庫并返回一(yī)個gdbm對象。該文件名參數(shù)是數(shù)據庫文件的名稱。
可(kě)選的标志參數(shù)可(kě)以是:
值 | 含義 |
---|---|
'R' | 打開(kāi)僅用于讀取的現有數(shù)據庫(默認) |
'W' | 打開(kāi)現有的數(shù)據庫進行(xíng)讀寫 |
'C' | 打開(kāi)數(shù)據庫進行(xíng)讀寫,如(rú)果不存在則創建它 |
'N' | 總是創建一(yī)個新的空的數(shù)據庫,打開(kāi)閱讀和(hé)寫作(zuò) |
以下(xià)附加字符可(kě)以附加到該标志以控制數(shù)據庫的打開(kāi)方式:
值 | 含義 |
---|---|
'F' | 以快(kuài)速模式打開(kāi)數(shù)據庫。寫入數(shù)據庫将不會同步。 |
'S' | 同步模式。這(zhè)将導緻數(shù)據庫的更改立即寫入文件。 |
“在” | 不要(yào)鎖定數(shù)據庫。 |
并非所有标志對于所有版本都(dōu)有效gdbm。模塊常量open_flags是一(yī)串支持的标志字符。error如(rú)果指定了(le)無效标志,則會引發異常。
可(kě)選模式參數(shù)是文件的Unix模式,僅在需要(yào)創建數(shù)據庫時(shí)使用。它默認為(wèi)八進制0666。
除了(le)類似字典的方法外(wài),gdbm對象還有以下(xià)方法:
gdbm.firstkey()
使用此方法和(hé)nextkey()方法可(kě)以遍曆數(shù)據庫中的每個鍵。遍曆按gdbm內(nèi)部散列值排序,不會按鍵值排序。此方法返回開(kāi)始鍵。
gdbm.nextkey(key)
返回遍曆中關鍵字的鍵。以下(xià)代碼打印數(shù)據庫中的每個鍵db,而不必在內(nèi)存中創建一(yī)個包含它們的列表:
k = db.firstkey()
while k != None:
print k
k = db.nextkey(k)
複制
gdbm.reorganize()
如(rú)果您執行(xíng)了(le)大量删除操作(zuò)并希望縮小gdbm文件使用的空間(jiān),則此例程将重新組織數(shù)據庫。gdbm除使用此重組外(wài),不會縮短數(shù)據庫文件的長(cháng)度; 否則,删除的文件空間(jiān)将被保留并在新(鍵值)對添加時(shí)重新使用。
gdbm.sync()
當數(shù)據庫以快(kuài)速模式打開(kāi)時(shí),此方法強制任何未寫入的數(shù)據寫入磁盤。
糾錯
gdbm.close()
關閉gdbm數(shù)據庫。
網站建設開(kāi)發|APP設計開(kāi)發|小程序建設開(kāi)發