gdbm
gdbm — GNU’s reinterpretation of dbm
注释
该gdbm
模块已被重命名为dbm.gnu
Python 3. 当将源代码转换为Python 3时,2to3工具将自动适应导入。
这个模块与模块非常相似dbm
,但是gdbm
用来提供一些附加功能。请注意,由gdbm
和创建的文件格式dbm
不兼容。
该gdbm
模块为GNU DBM库提供了一个接口。gdbm
对象的行为就像映射(字典),除了键和值总是字符串。打印gdbm
对象不会打印键和值,并且不支持items()
和values()
方法。
该模块定义了以下常量和功能:
exception gdbm.error
引发gdbm
特定的错误,例如I / O错误。KeyError
引发一般映射错误,如指定不正确的键。
gdbm.open(filename[, flag[, mode]])
打开一个gdbm
数据库并返回一个gdbm
对象。该文件名
参数是数据库文件的名称。
可选的标志
参数可以是:
值 | 含义 |
---|---|
'R' | 打开仅用于读取的现有数据库(默认) |
'W' | 打开现有的数据库进行读写 |
'C' | 打开数据库进行读写,如果不存在则创建它 |
'N' | 总是创建一个新的空的数据库,打开阅读和写作 |
以下附加字符可以附加到该标志以控制数据库的打开方式:
值 | 含义 |
---|---|
'F' | 以快速模式打开数据库。写入数据库将不会同步。 |
'S' | 同步模式。这将导致数据库的更改立即写入文件。 |
“在” | 不要锁定数据库。 |
并非所有标志对于所有版本都有效gdbm
。模块常量open_flags
是一串支持的标志字符。error
如果指定了无效标志,则会引发异常。
可选模式
参数是文件的Unix模式
,仅在需要创建数据库时使用。它默认为八进制0666
。
除了类似字典的方法外,gdbm
对象还有以下方法:
gdbm.firstkey()
使用此方法和nextkey()
方法可以遍历数据库中的每个键。遍历按gdbm
内部散列值排序,不会按键值排序。此方法返回开始键。
gdbm.nextkey(key)
返回遍历中关键字的键
。以下代码打印数据库中的每个键db
,而不必在内存中创建一个包含它们的列表:
k = db.firstkey()
while k != None:
print k
k = db.nextkey(k)
gdbm.reorganize()
如果您执行了大量删除操作并希望缩小gdbm
文件使用的空间,则此例程将重新组织数据库。gdbm
除使用此重组外,不会缩短数据库文件的长度; 否则,删除的文件空间将被保留并在新(键值)对添加时重新使用。
gdbm.sync()
当数据库以快速模式打开时,此方法强制任何未写入的数据写入磁盘。
gdbm.close()
关闭gdbm
数据库。