老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

Python中的shelve模塊是什么

Python中的shelve模塊是什么?很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。

成都創新互聯是一家專業提供焦作企業網站建設,專注與成都網站設計、做網站、HTML5建站、小程序制作等業務。10年已為焦作眾多企業、政府機構等服務。創新互聯專業的建站公司優惠進行中。

shelve模塊

使用json或者pickle持久化數據,能dump多次,但load的話只能取到最新的dump, 因為先前的數據已經被后面dump的數據覆蓋掉了。如果想要實現dump多次不被覆蓋,就可以想到使用shelve模塊。shelve模塊可以持久化所有pickle所支持的數據類型。另外,寫程序的時候如果不想用關系數據庫那種重量級的去存儲數據,也可以用到shelve。

shelve是用key來訪問的,使用起來和字典類似。 要注意的是,在shelve模塊中,key必須為字符串,而值可以是python所支持的數據類型。

另外,shelve其實用anydbm去創建DB并且管理持久化對象的。

shelve只提供給我們一個open方法,是用key來訪問的,使用起來和字典類似。 可以像字典一樣使用get來獲取數據等。

如下操作:

import shelve
f_shelve = shelve.open('shelve') # 創建一個文件句柄
f_shelve["name"] = "小明" # 向文件中存放數據
f_shelve["age"] = 21 # 向文件中存放數據
f_shelve["sex"] = "男"

運行后會生成3個文件:shelve.bak shelve.dat shelve.dir

shelve.dat 存儲的就是b字節數據類型的數據。bak和dir后綴從字面上看是備份和目錄,具體做什么的不是很清楚。

當我們寫好數據后,如何讀取呢?

import shelve
f_shelve = shelve.open('shelve') # 創建一個文件句柄
# 打印文件內容,和類型
print(f_shelve["name"],f_shelve["age"],f_shelve["sex"],type(f_shelve))

打印內容如下

小明 21 男 

既然f_shelve類似于字典,那我們也可以使用for循環進行打印,如下:

import shelve
f_shelve = shelve.open('shelve') # 創建一個文件句柄
# 使用for循環打印內容
for k,v in f_shelve.items():
    print(k,v)

打印內容如下

name 小明
age 21
sex 男

f_shelve現在是一個特殊的文件句柄,它可以執行字典的多數方法,對文件里的數據進行操作。

import shelve
f_shelve = shelve.open('shelve') # 創建一個文件句柄
f_shelve["list"] = [1,2,3]  # 向文件中添加數據列表
f_shelve["list"].append("abc") # 向列表中追加內容.
f_shelve["list"].pop(1) # 從列表中刪除一個元素
f_shelve["name"] = "小明" # 向文件中追加內容
f_shelve["name"] = "小紅" # 修改name所對應的值
print(f_shelve["list"],f_shelve["name"],sep="\n")

打印內容如下

[1, 2, 3]
小紅

通過上面的打印內容我們可以發現,我們將列表寫入文件后,然后在讀取出來進行追加和刪除元素,并沒有對文件產生影響,文件中的列表內容還是原來的值。而我們向文件中添加字符串時,在讀取出來對字符串進行修改發現數據被修改了。

由此我們可以知道在向文件中寫入一個可變的數據時,如果讀取出來對數據進行修改只是在內存中的修改,修改后的數據并沒有被真正寫入到文件中。那么我們該如何進行操作呢?這時就需要回寫了。

import shelve
# 創建一個特殊的文件句柄,并添加回寫功能
f_shelve = shelve.open('shelve',writeback=True)  # 啟用會寫
f_shelve["list"] = [1,2,3]  # 向文件中添加數據列表
f_shelve["list"].append("abc") # 向列表中追加內容.
f_shelve["list"].pop(1) # 從列表中刪除一個元素
print(f_shelve["list"])

打印內容如下

[1, 3, 'abc']

這回我們在修改列表時,可以看出列表的數據確實被修改了。

總結如下:

1、shelve模塊將內存數據以字典的類型(key,value)通過文件持久化,模擬出簡單的db效果。

2、shelve模塊可以持久化任何pickle所支持的python數據格式,但是它的key必需得是字符串。

3、shelve可以看作是pickle模塊的一個封裝,但它實現了可以多次dump(后面的dump不會覆蓋前面的)和多次load。

4、shelve訪問己有key時,實際上取出的是數據源給出的一份拷貝,所以對于拷貝做出的增加和刪除等操作都需要用writeback=True參數才能實現寫入回文件中進行修改。

5、shelve對于d[key] = data這種操作,視為存儲數據,無則新增,有則覆蓋,

對與訪問key當中的值(條目)進行修改,默認不回寫并不矛盾和沖突。

看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注創新互聯行業資訊頻道,感謝您對創新互聯的支持。


本文名稱:Python中的shelve模塊是什么
標題來源:http://www.xueling.net.cn/article/jegpdc.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 久久久久久综合网天天 | 91久久久一线二线三线品牌 | 狠狠噜天天噜日日噜视频跳一跳 | 亚洲第一网站免费视频 | 免费看片91 | 夜夜狠狠擅视频 | 日韩特黄一级片 | 欧美亚洲另类久久综合二区 | 999在线播放 | 97超碰人人干 | 一区在线视频观看 | 精品96久久久久久中文字幕无 | 欧美日韩精品成人网站二区A∨有 | 国产一区二区三区av网站 | 国产一精品一AV一免费爽爽 | 国产极品粉嫩泬免费观看 | 又大又硬又爽免费视频 | 久久中文视频 | 欧美大尺度一区二区 | 国产成人高清啪免费观看软件 | 中字一区 | 午夜午夜精品一区二区三区文 | 日韩一区二区观看 | 亚洲午夜影院在线观看 | 在线免费看av不卡 | 成年女人看片免费视频播放人 | 国产乱码精品一区二区三区不卡 | 亚洲一区精品在线观看 | 又爽又高潮的BB视频免费看 | 国产综合久| 白娘子传奇50集免费观看 | 久久亚洲春色中文字幕久久久 | 香蕉久草| 蜜臀av国内精品久久久夜夜快色 | 麻豆av.com | 久久久婷婷成人综合激情 | 懂色av一区二区三区蜜臀 | 国产成人网 | 国产一区二区三区四区成男人 | 亚洲一区二区三区香蕉 | 久操精品视频 |