2011-02-11 32 views

回答

6

你得到的擴展取決於使用哪個數據庫後端。 Python 2和Python 3的默認值有可能不同,但它也可能是環境中可用的數據庫接口之間的差異。

所以不,你沒有保證擴展,除非你使用一個特定的實現,即BsdDbShelf或DbfilenameShelf。您可以在由tempfile創建的臨時目錄中指定一個文件,然後刪除while目錄。

+0

那種我可以編程方式創建一個架子,雖然我無法抹去一個(而不承擔太多)。 – ubershmekel 2011-02-11 11:42:11

1

我使用shelve,因爲tempFile和dict []對象無法在模塊之間持續存在。正如您發現的那樣,調用.clear()不會清除磁盤上的持久對象的內容,並在退出後在磁盤上留下填充的r + w文件。 (類似於釋放後使用漏洞免費),當使用完可以刪除貨架:怪

import os 
import shelve 

shelve_name = 'shelve_name' 
shelve_contents = shelve.open(shelve_name, flag='c', protocol=None, writeback=False) 

shelve_file = (os.getcwd()+'/'+shelve_name) 
os.remove(shelve_file)