溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

如何進(jìn)行python核心模塊中pickle和cPickle的分析

發(fā)布時(shí)間:2021-12-04 17:03:19 來(lái)源:億速云 閱讀:138 作者:柒染 欄目:互聯(lián)網(wǎng)科技

如何進(jìn)行python核心模塊中pickle和cPickle的分析,針對(duì)這個(gè)問(wèn)題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問(wèn)題的小伙伴找到更簡(jiǎn)單易行的方法。

pickle模塊使用的數(shù)據(jù)格式是python專用的,并且不同版本不向后兼容,同時(shí)也不能被其他語(yǔ)言說(shuō)識(shí)別。要和其他語(yǔ)言交互,可以使用內(nèi)置的json 包使用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 主要函數(shù)

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ù)相同的序列化,但是與dump不同的dumps并不將轉(zhuǎn)換后的字符串寫(xiě)入文件,而是將所得到的轉(zhuǎn)換后的數(shù)據(jù)以字符串的形式返回。

loads()函數(shù)執(zhí)行和load()函數(shù)一樣的反序列化。 loads接受一個(gè)字符串參數(shù),將字符串解碼成為python的數(shù)據(jù)類型,函數(shù)loads和dumps進(jìn)行的是互逆的操作。

cPickle是pickle得一個(gè)更快得C語(yǔ)言編譯版本。

pickle的dump和load相當(dāng)于java的序列化和反序列化操作

pickle用法示例

#! /usr/local/env python # -*- coding=utf-8 -*-   if __name__ == "__main__": import cPickle   #序列化到文件 obj = 123,"abcdedf",["ac",123],{"key":"value","key1":"value1"} print obj #輸出:(123, 'abcdedf', ['ac', 123], {'key1': 'value1', 'key': 'value'}) #r 讀寫(xiě)權(quán)限 r b 讀寫(xiě)到二進(jìn)制文件 f = open(r"d:\a.txt","r ") cPickle.dump(obj,f) f.close() f = open(r"d:\a.txt") print cPickle.load(f) #輸出:(123, 'abcdedf', ['ac', 123], {'key1': 'value1', 'key': 'value'})   #序列化到內(nèi)存(字符串格式保存),然后對(duì)象可以以任何方式處理如通過(guò)網(wǎng)絡(luò)傳輸 obj1 = cPickle.dumps(obj) print type(obj1) #輸出:<type 'str'> print obj1 #輸出:python專用的存儲(chǔ)格式 obj2 = cPickle.loads(obj1) print type(obj2) #輸出:<type 'tuple'> print obj2 #輸出:(123, 'abcdedf', ['ac', 123], {'key1': 'value1', 'key': 'value'})

當(dāng)然啦,你dump幾次,也就是需要load幾次,不要希望dump了三次,load給你返回一個(gè)list。

關(guān)于如何進(jìn)行python核心模塊中pickle和cPickle的分析問(wèn)題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒(méi)有解開(kāi),可以關(guān)注億速云行業(yè)資訊頻道了解更多相關(guān)知識(shí)。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI