删除货架中数据的最简洁方法是什么?

时间:2016-05-04 13:51:07

标签: python shelve

当我删除货架中的元素时,我还有一些数据。我尝试使用popdelclear,但结果是一样的。剩余的数据位于带有dat扩展名的文件中。因此,即使在使用该方法之后,清除dat文件的大小也不是0Ko。

这就是我的尝试:

import shelve
test = shelve.open('test')
test['a']=1
#test.pop('a')
#del test['a']
#test.clear()
test.close()

有没有办法彻底删除货架的数据?

2 个答案:

答案 0 :(得分:1)

您可以通过del d[key]从搁架中删除对象,这是正确的方法。但是当你删除你搁置的所有对象时,它意味着有空的dict。所以你的搁置文件包含腌制的空字典,因此静音大小不是0.

答案 1 :(得分:0)

删除货架中的所有数据与删除文件中的所有数据不同。

显然搁置会创建一个数据库文件(至少对我而言)大约是13k,其中没有数据。请尝试以下方法:

import os
import shelve

with shelve.open('fnord') as db:
    db['color'] = 'blue, no yelloowwwww!'
    print(list(db.keys()))

print(os.stat('fnord').st_size)

with shelve.open('fnord') as db:
    db.clear()
    print(list(db.keys()))

print(os.stat('fnord').st_size)

你会发现你的货架没有钥匙,但它的尺寸仍然很大。如果使用十六进制编辑器编辑文件,您将看到有大量数据,但它可能与数据库文件格式有关。