1

DBM モジュールには、キーに格納されている値を削除するコマンドがあります。

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

しかし、ランタイム エラーが発生するため、このコマンドを反復することさえできません。(RuntimeError: 反復中に辞書のサイズが変更されました。)

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

DMBファイルを一度に空にする効率的な方法はありますか? 私はPython 3.3を使用しています

4

1 に答える 1

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

動作するはずです。

編集:目的がデータベースを完全に空にすることだけである場合は、データベースを閉じてから再度開くこともできますdbm.open('filename', 'n')。フラグは、'n'「常に新しい空のデータベースを作成し、読み取りと書き込みのために開く」ことを意味します。既存のファイルを上書きするようです。

于 2013-05-20T12:41:36.733 に答える