欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Python中的shelve模塊是什么

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

成都創(chuàng)新互聯(lián)是一家專業(yè)提供焦作企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站設(shè)計、做網(wǎng)站、HTML5建站、小程序制作等業(yè)務(wù)。10年已為焦作眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)的建站公司優(yōu)惠進(jìn)行中。

shelve模塊

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

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

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

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

如下操作:

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

運(yùn)行后會生成3個文件:shelve.bak shelve.dat shelve.dir

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

當(dāng)我們寫好數(shù)據(jù)后,如何讀取呢?

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

打印內(nèi)容如下

小明 21 男 <class 'shelve.DbfilenameShelf'>

既然f_shelve類似于字典,那我們也可以使用for循環(huán)進(jìn)行打印,如下:

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

打印內(nèi)容如下

name 小明
age 21
sex 男

f_shelve現(xiàn)在是一個特殊的文件句柄,它可以執(zhí)行字典的多數(shù)方法,對文件里的數(shù)據(jù)進(jìn)行操作。

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

打印內(nèi)容如下

[1, 2, 3]
小紅

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

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

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

打印內(nèi)容如下

[1, 3, 'abc']

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

總結(jié)如下:

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

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

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

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

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

對與訪問key當(dāng)中的值(條目)進(jìn)行修改,默認(rèn)不回寫并不矛盾和沖突。

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。

網(wǎng)站標(biāo)題:Python中的shelve模塊是什么
瀏覽地址:http://aaarwkj.com/article12/jegpdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供小程序開發(fā)、商城網(wǎng)站、外貿(mào)建站、網(wǎng)站設(shè)計營銷型網(wǎng)站建設(shè)、網(wǎng)站營銷

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)
国产在线精品成人欧美| 高清不卡av在线播放| 国产极品美女视频福利| 国产精品日韩欧美一区二区| 九九热在线免费观看精品视频| 国产真实乱偷精品视频免| 91欧美精品午夜性色福利| 97视频精品免费观看| 中文字幕日韩午夜精品| 秋霞日韩欧美一区二区三区| 成人精品国产一区二区| 亚洲视频一区二区精品| 欧美日韩国产一下老妇| 福利av一区二区三区| 色综合色综合蘑菇在线| 中文字幕日韩人妻一二三区| 人妻有码系列中文字幕专区| 在线观看后入大屁股| 欧美精品高清在线视频| 激情图区亚洲一区二区| 精品人妻aⅴ一区二区| 亚洲第六页亚洲第一页| 国产69精品久久一级| 亚洲中少妇久久中文字幕| 福利成人午夜国产一区| 国产亚洲成人精品久久| 色琪琪原网另类欧美日韩| 人妻大乳一区二区三区| 91精品国产综合久久不国产大片 | 精品一区二区三区推荐| 日本三级黄色免费的网站| 亚洲av在线观看午夜| 男人午夜福利视频在线观看| 亚洲欧美一区二区粉嫩| 国产毛片一区二区在线| 精品一区二区三区女同| 色呦呦一区二区三区视频| 欧美熟女av在线观看| 国产91九色视频在线| 国产亚洲精品a久久7777| 亚洲综合中文字幕经典av在线|