如何有效地清空Python中的DBM文件?

时间:2013-05-20 10:09:10

标签: python python-3.x dbm

DBM模块中有一个命令可以删除存储在密钥中的值。

del d[key]      # delete data stored at key (raises KeyError   # if no such key)

但是我甚至无法使用此命令进行迭代,因为发生了运行时错误。(运行时错误:字典在迭代期间改变了大小。)

import dbm
db=dbm.open("file.db","c")
for key in db:
    del db[key]
print(len(db))
db.close()

是否有一种有效的方法可以立即清空DMB文件? 我使用的是Python 3.3

1 个答案:

答案 0 :(得分:2)

for key in list(db):
    del db[key]

应该有用。

编辑:如果目标只是完全清空数据库,您也可以关闭数据库并使用dbm.open('filename', 'n')重新打开它。 'n'标志表示“始终创建一个新的空数据库,打开以供阅读和写入”;它似乎覆盖了以前存在的任何文件。