dict.clear()
(Windows 7 64 bit Python 3.5.2) en kolay ve geçerli olmalıdır, ama aslında raf dosyaları temizlemez gibi görünüyor. Ben her zaman aynı boyutta olması beklenebilir Örneğin, raf .dat
dosya boyutu, aşağıdaki kod parçasını çalıştırmayı her zaman büyür:
shelf = shelve.open('shelf')
shelf.clear()
shelf['0'] = list(range(10000))
shelf.close()
Güncelleme: shelve
olarak kullandığıdbm.dumb
, onun Windows altında veritabanını altında yatan, bu TODO öğeyi in its code içerir:
- boş alanı yeniden (şu anda, uzay kez işgal Silinen veya genişletilmiş öğeleri tarafından bu büyüyen raf dosyası sorunu açıklar)
yeniden asla.
Yani yerine dict.clear()
, ben
flag='n'
ile
shelve.open
kullanıyorum.
shelve.open()
documentation alıntı:
isteğe bayrak parametresi dbm.open bayrak parametresi ile aynı yorumu vardır().
Ve
dbm.open()
documentation
flag='n'
için:
daima okuma için açık ve raf zaten açıksa
yazma yeni, boş bir veritabanı oluşturmak, kullanım olacaktır:
shelf.close()
shelf = shelve.open('shelf', flag='n')
Neden dosyayı silmiyorsunuz? –
Not: dict = {"foo": "bar"} 'dict [" foo "] =" bar "' olmalıdır. Şimdi olduğu gibi, raf nesnesine veri eklemiyor - bunun yerine rafta değişiklik yapılmadan yeni bir sözlük nesnesine "dict" işaret ediyor. – george