python3 shelve模塊的詳解
一、簡介
在python3中我們使用json或者pickle持久化數據,能dump多次,但只能load一次,因為先前的數據已經被后面dump的數據覆蓋掉了。如果我們想要實現dump和load多次,可以使用shelve模塊。shelve模塊可以持久化所有pickle所支持的數據類型。
二、持久化數據
1、數據持久化
import shelveimport datetime info = {'name': 'bigberg', 'age': 22}name = ['Apoll', 'Zous', 'Luna']t = datetime.datetime.now() with shelve.open('shelve.txt') as f: f['name'] = name # 持久化列表 f['info'] = info # 持久化字典 f['time'] = t # 持久化時間類型 執行代碼后會生成3個文件:shelve.txt.bak、shelve.txt.dat、shelve.txt.dir。
shelve.txt.bak 的內容
'info', (512, 45)'name', (0, 42)'time', (1024, 44)
shelve.txt.dat
?]q (X ApollqX ZousqX Lunaqe. ?}q (X ageqKX nameqX bigbergqu. ?cdatetimedatetimeq C?"2?q?qRq.
shelve.txt.dir 的內容
'info', (512, 45)'name', (0, 42)'time', (1024, 44)
2、數據讀取
我們使用get來獲取數據
import shelve with shelve.open('shelve.txt') as f: n = f.get('name') i = f.get('info') now = f.get('time') print(n)print(i)print(now) #輸出 ['Apoll', 'Zous', 'Luna']{'age': 22, 'name': 'bigberg'}2017-07-08 11:07:34.865022 1、shelve模塊是一個簡單的key,value將內存數據通過文件持久化的模塊。
2、shelve模塊可以持久化任何pickle可支持的python數據格式。
3、shelve就是pickle模塊的一個封裝。
4、shelve模塊是可以多次dump和load。
感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
新聞熱點
疑難解答