最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python 序列化 pickle/cPickle模塊使用介紹

 更新時間:2014年11月30日 21:10:11   投稿:mdxy-dxy  
這篇文章主要介紹了Python 序列化 pickle/cPickle模塊使用介紹,需要的朋友可以參考下

Python序列化的概念很簡單。內(nèi)存里面有一個數(shù)據(jù)結(jié)構(gòu),你希望將它保存下來,重用,或者發(fā)送給其他人。你會怎么做?這取決于你想要怎么保存,怎么重用,發(fā)送給誰。很多游戲允許你在退出的時候保存進(jìn)度,然后你再次啟動的時候回到上次退出的地方。(實(shí)際上,很多非游戲程序也會這么干)在這種情況下,一個捕獲了當(dāng)前進(jìn)度的數(shù)據(jù)結(jié)構(gòu)需要在你退出的時候保存到硬盤上,接著在你重新啟動的時候從硬盤上加載進(jìn)來。

Python標(biāo)準(zhǔn)庫提供pickle和cPickle模塊。cPickle是用C編碼的,在運(yùn)行效率上比pickle要高,但是cPickle模塊中定義的類型不能被繼承(其實(shí)大多數(shù)時候,我們不需要從這些類型中繼承,推薦使用cPickle)。cPickle和pickle的序列化/反序列化規(guī)則是一樣的,使用pickle序列化一個對象,可以使用cPickle來反序列化。同時,這兩個模塊在處理自引用類型時會變得更加“聰明”,它不會無限制的遞歸序列化自引用對象,對于同一對象的多次引用,它只會序列化一次。

pickle模塊中的兩個主要函數(shù)是dump()和load()。dump()函數(shù)接受一個數(shù)據(jù)對象和一個文件句柄作為參數(shù),把數(shù)據(jù)對象以特定的格式保存到給定的文件中。當(dāng)我們使用load()函數(shù)從文件中取出已保存的對象時,pickle知道如何恢復(fù)這些對象到它們本來的格式。

dumps()函數(shù)執(zhí)行和dump()函數(shù)相同的序列化。取代接受流對象并將序列化后的數(shù)據(jù)保存到磁盤文件,這個函數(shù)簡單的返回序列化的數(shù)據(jù)。
loads()函數(shù)執(zhí)行和load()函數(shù)一樣的反序列化。取代接受一個流對象并去文件讀取序列化后的數(shù)據(jù),它接受包含序列化后的數(shù)據(jù)的str對象, 直接返回的對象。

cPickle.dump(obj, file, protocol=0)
序列化對象,并將結(jié)果數(shù)據(jù)流寫入到文件對象中。參數(shù)protocol是序列化模式,默認(rèn)值為0,表示以文本的形式序列化。protocol的值還可以是1或2,表示以二進(jìn)制的形式序列化。

cPickle.load(file)
反序列化對象。將文件中的數(shù)據(jù)解析為一個Python對象。

下面通過一個簡單的例子來演示上面兩個方法的使用:

>>> import pickle,cPickle
>>> info_dict = {'name':'yeho','age':100,'Lang':'Python'}
>>> f = open('info.pkl','wb')
>>> pickle.dump(info_dict,f)
>>> f.close()
>>> exit()
# cat info.pkl
(dp0
S'Lang'
p1
S'Python'
p2
sS'age'
p3
I100
sS'name'
p4
S'yeho'
p5
s.
>>> import cPickle
>>> info_dict
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
NameError: name 'info_dict' is not defined
>>> f = open('info.pkl','r+')
>>> info2_dict = cPickle.load(f)
>>> info2_dict
{'Lang': 'Python', 'age': 100, 'name': 'yeho'}
>>> info2_dict['age'] = 110
>>> cPickle.dump(info2_dict,f)
>>> f.close()
>>> exit()
>>> import pickle
>>> f = open('info.pkl','r+')
>>> info_dict = pickle.load(f)
>>> info_dict
{'Lang': 'Python', 'age': 100, 'name': 'yeho'}
>>> info2_dict = pickle.load(f)
>>> info2_dict
{'Lang': 'Python', 'age': 110, 'name': 'yeho'}
>>> info3_dict = pickle.load(f)
Traceback (most recent call last):
 File "<stdin>", line 1, in <module>
 File "/usr/lib64/python2.6/pickle.py", line 1370, in load
 return Unpickler(file).load()
 File "/usr/lib64/python2.6/pickle.py", line 858, in load
 dispatch[key](self)
 File "/usr/lib64/python2.6/pickle.py", line 880, in load_eof
 raise EOFError
EOFError

相關(guān)文章

  • python實(shí)現(xiàn)飛船大戰(zhàn)

    python實(shí)現(xiàn)飛船大戰(zhàn)

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)飛船大戰(zhàn),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • MAC中PyCharm設(shè)置python3解釋器

    MAC中PyCharm設(shè)置python3解釋器

    本文給大家分享的是修改MACA中pycharm的默認(rèn)的Python解釋器,由于默認(rèn)解釋器是Python2,使用起來各種不便,下面給大家講解下如何修改
    2017-12-12
  • 如何使用selenium和requests組合實(shí)現(xiàn)登錄頁面

    如何使用selenium和requests組合實(shí)現(xiàn)登錄頁面

    這篇文章主要介紹了如何使用selenium和requests組合實(shí)現(xiàn)登錄頁面,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-02-02
  • python復(fù)合條件下的字典排序

    python復(fù)合條件下的字典排序

    這篇文章主要介紹了python復(fù)合條件下的字典排序,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • 用Pytorch實(shí)現(xiàn)線性回歸模型的步驟

    用Pytorch實(shí)現(xiàn)線性回歸模型的步驟

    線性關(guān)系是一種非常簡單的變量之間的關(guān)系,因變量和自變量在線性關(guān)系的情況下,可以使用線性回歸算法對一個或多個因變量和自變量間的線性關(guān)系進(jìn)行建模,本文主要介紹了如何利用Pytorch實(shí)現(xiàn)線性模型,需要的朋友可以參考下
    2024-01-01
  • Django 404、500頁面全局配置知識點(diǎn)詳解

    Django 404、500頁面全局配置知識點(diǎn)詳解

    在本篇文章里小編給大家整理了關(guān)于Django 404、500頁面全局配置知識點(diǎn)詳解,需要的朋友們可以學(xué)習(xí)下。
    2020-03-03
  • bluepy 一款python封裝的BLE利器簡單介紹

    bluepy 一款python封裝的BLE利器簡單介紹

    這篇文章主要介紹了bluepy 一款python封裝的BLE利器簡單介紹,bluepy 是github上一個很好的藍(lán)牙開源項(xiàng)目, 其主要功能是用python實(shí)現(xiàn)linux上BLE的接口。,需要的朋友可以參考下
    2019-06-06
  • Python使用內(nèi)存緩存實(shí)例分享

    Python使用內(nèi)存緩存實(shí)例分享

    Python中的內(nèi)存緩存是一種將計(jì)算結(jié)果存儲在內(nèi)存中,以便在后續(xù)調(diào)用時快速獲取結(jié)果的技術(shù)。通過使用裝飾器和字典等數(shù)據(jù)結(jié)構(gòu),可以輕松實(shí)現(xiàn)內(nèi)存緩存功能,提高程序的執(zhí)行效率。
    2023-09-09
  • Djanog admin 顯示圖片及觸發(fā)器講解

    Djanog admin 顯示圖片及觸發(fā)器講解

    這篇文章主要為大家介紹了Djanog admin 顯示圖片及觸發(fā)器講解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06
  • Python中Enum使用的幾點(diǎn)注意事項(xiàng)

    Python中Enum使用的幾點(diǎn)注意事項(xiàng)

    Python中的枚舉是作為一個類存在的,這是與其他語言的一個較為鮮明的特征,下面這篇文章主要給大家介紹了關(guān)于Python中Enum使用的幾點(diǎn)注意事項(xiàng),需要的朋友可以參考下
    2022-02-02

最新評論

二连浩特市| 平南县| 汕尾市| 雷山县| 松原市| 临夏县| 新巴尔虎右旗| 靖边县| 舞钢市| 汾西县| 石首市| 南丹县| 壶关县| 成安县| 漯河市| 耒阳市| 孝义市| 铁岭县| 名山县| 广宁县| 武功县| 南开区| 兖州市| 长乐市| 通江县| 山东省| 三穗县| 泉州市| 南丰县| 乳源| 新竹县| 新野县| 林口县| 乐陵市| 南乐县| 广西| 永泰县| 新竹市| 深水埗区| 永和县| 正安县|