詳解Python3 pickle模塊用法
pickle(python3.x)和cPickle(python2.x的模塊)相當(dāng)于java的序列化和反序列化操作。
常采用下面的方式使用:
import pickle pickle.dump(obj,f) pickle.dumps(obj,f) pickle.load(f) pickle.loads(f)
使用pickle模塊你可以把Python對(duì)象直接保存到文件,而不需要把他們轉(zhuǎn)化為字符串,也不用底層的文件訪問(wèn)操作把它們寫(xiě)入到一個(gè)二進(jìn)制文件里。 pickle模塊會(huì)創(chuàng)建一個(gè)python語(yǔ)言專用的二進(jìn)制格式,你基本上不用考慮任何文件細(xì)節(jié),它會(huì)幫你干凈利落地完成讀寫(xiě)?yīng)毾聿僮?,唯一需要的只是一個(gè)合法的文件句柄。
pickle模塊中的兩個(gè)主要函數(shù)是dump()和load():
dump()函數(shù)接受一個(gè)文件句柄和一個(gè)數(shù)據(jù)對(duì)象作為參數(shù),把數(shù)據(jù)對(duì)象以特定的格式保存到給定的文件中。當(dāng)我們使用load()函數(shù)從文件中取出已保存的對(duì)象時(shí),pickle知道如何恢復(fù)這些對(duì)象到它們本來(lái)的格式。
dumps()函數(shù)執(zhí)行和dump() 函數(shù)相同的序列化。取代接受流對(duì)象并將序列化后的數(shù)據(jù)保存到磁盤(pán)文件,這個(gè)函數(shù)簡(jiǎn)單的返回序列化的數(shù)據(jù)。
loads()函數(shù)執(zhí)行和load() 函數(shù)一樣的反序列化。取代接受一個(gè)流對(duì)象并去文件讀取序列化后的數(shù)據(jù),它接受包含序列化后的數(shù)據(jù)的str對(duì)象, 直接返回的對(duì)象。
示例:
# -*- coding:utf-8 -*-
import pickle
obj = 123, "abcdef", ["ac", 123], {"key": "value", "key1": "value1"}
print(obj)
# 序列化到文件
with open(r"F:\pycodes\ML\a.txt", "wb") as f:
pickle.dump(obj, f)
with open(r"F:\\pycodes\\ML\\a.txt", "rb") as f:
print(pickle.load(f))# 輸出:(123, 'abcdef', ['ac', 123], {'key': 'value', 'key1': 'value1'})
# 序列化到內(nèi)存(字符串格式保存),然后對(duì)象可以以任何方式處理如通過(guò)網(wǎng)絡(luò)傳輸
obj1 = pickle.dumps(obj)
print(type(obj1))# 輸出<class 'bytes'>
print(obj1)# 輸出:python專用的存儲(chǔ)格式 b'\x80\x03(K{X\x06\x00\x00\x00abcdefq\x00]q\x01(X\x02\x00\x00\x00acq\x02K{e}q\x03(X\x03\x00\x00\x00keyq\x04X\x05\x00\x00\x00valueq\x05X\x04\x00\x00\x00key1q\x06X\x06\x00\x00\x00value1q\x07utq\x08.'
obj2 = pickle.loads(obj1)
print(type(obj2))# 輸出:<class 'tuple'>
print(obj2) # 輸出:(123, 'abcdef', ['ac', 123], {'key': 'value', 'key1': 'value1'})
總結(jié)
以上所述是小編給大家介紹的Python3 pickle模塊用法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!
相關(guān)文章
Python時(shí)間序列數(shù)據(jù)的預(yù)處理方法總結(jié)
這篇文章主要介紹了Python時(shí)間序列數(shù)據(jù)的預(yù)處理方法總結(jié),時(shí)間序列數(shù)據(jù)隨處可見(jiàn),要進(jìn)行時(shí)間序列分析,我們必須先對(duì)數(shù)據(jù)進(jìn)行預(yù)處理。時(shí)間序列預(yù)處理技術(shù)對(duì)數(shù)據(jù)建模的準(zhǔn)確性有重大影響2022-07-07
python 使用百度AI接口進(jìn)行人臉對(duì)比的步驟
這篇文章主要介紹了python 使用百度AI接口進(jìn)行人臉對(duì)比的步驟,幫助大家更好的理解和學(xué)習(xí)使用python,感興趣的朋友可以了解下2021-03-03
Python一行代碼識(shí)別增值稅發(fā)票實(shí)現(xiàn)示例
這篇文章主要為大家介紹了Python一行代碼識(shí)別增值稅發(fā)票實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
舉例講解Django中數(shù)據(jù)模型訪問(wèn)外鍵值的方法
這篇文章主要介紹了舉例講解Django中數(shù)據(jù)模型訪問(wèn)外鍵值的方法,Django是最具人氣的Python web開(kāi)發(fā)框架,需要的朋友可以參考下2015-07-07
解決Python3 控制臺(tái)輸出InsecureRequestWarning問(wèn)題
這篇文章主要介紹了解決Python3 控制臺(tái)輸出InsecureRequestWarning的問(wèn)題 ,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-07-07
python圖形開(kāi)發(fā)GUI庫(kù)pyqt5的詳細(xì)使用方法及各控件的屬性與方法
這篇文章主要介紹了python圖形開(kāi)發(fā)GUI庫(kù)pyqt5的詳細(xì)使用方法及各控件的屬性與方法,需要的朋友可以參考下2020-02-02

