1. 程式人生 > >python基礎教程_學習筆記18:標準庫:一些最愛——shelve

python基礎教程_學習筆記18:標準庫:一些最愛——shelve

變量綁定 工作 關閉 mes 名稱 tis 標準 times data-

版權聲明:本文為博主原創文章,未經博主同意不得轉載。 https://blog.csdn.net/signjing/article/details/36029981

標準庫:一些最愛

shelve

Shelve唯一有趣的函數是open

在調用它的時候(使用文件名稱作為參數),它會返回一個Shelf對象,能夠用它來存儲內容。

僅僅須要把它當作普通的字典(可是鍵一定要作為字符串)來操作就可以,在完畢工作之後,調用它的close方法。

意識到shelve.open函數返回的對象並非普通的映射是非常重要的。

>>> import shelve

>>> s=shelve.open(‘a.txt‘)

>>> s[‘x‘]=[‘a‘,‘b‘,‘c‘]

>>> s[‘x‘].append(‘d‘)

>>> s[‘x‘]

[‘a‘, ‘b‘, ‘c‘]

‘d’去哪了?

當你在shelf對象中查找元素的時候,這個對象都會依據已經存儲的版本號進行又一次構建。當你將元素賦給某個鍵的時候。它就被存儲了。

上例中的操作例如以下:

列表[‘a’,’b’,’c’]存儲在鍵x下;

獲得存儲的表示,而且依據它來創建新的列表,而’d’被加入到這個副本中。改動的版本號沒有被保存。

終於,再次獲得原始版本號——沒有’d’。

為了正確地使用shelve模塊改動存儲的對象。必須將暫時變量綁定到獲得的副本上。而且在它被改動後又一次存儲這個副本。

>>> temp=s[‘x‘]

>>> temp.append(‘d‘)

>>> s[‘x‘]=temp

>>> s[‘x‘]

[‘a‘, ‘b‘, ‘c‘, ‘d‘]

還有個解決的方法,將open函數的writeback參數設為True

假設這樣做,全部從shelf讀取或者賦值到shelf的數據結構都會保存在內存(緩存)中,而且僅僅有在關閉shelf的時候才寫回到磁盤中。假設處理的數據不大,而且不想考慮這些問題。那麽將

writeback設為True(確保在最後關閉了shelf)的方法還是不錯的。

python基礎教程_學習筆記18:標準庫:一些最愛——shelve