如何進(jìn)行python核心模塊中pickle和cPickle的分析,針對(duì)這個(gè)問題,這篇文章詳細(xì)介紹了相對(duì)應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。
站在用戶的角度思考問題,與客戶深入溝通,找到友好網(wǎng)站設(shè)計(jì)與友好網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶體驗(yàn)好的作品,建站類型包括:網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、國際域名空間、網(wǎng)絡(luò)空間、企業(yè)郵箱。業(yè)務(wù)覆蓋友好地區(qū)。
pickle模塊使用的數(shù)據(jù)格式是python專用的,并且不同版本不向后兼容,同時(shí)也不能被其他語言說識(shí)別。要和其他語言交互,可以使用內(nèi)置的json 包使用pickle模塊你可以把Python對(duì)象直接保存到文件,而不需要把他們轉(zhuǎn)化為字符串,也不用底層的文件訪問操作把它們寫入到一個(gè)二進(jìn)制文件里。 pickle模塊會(huì)創(chuàng)建一個(gè)python語言專用的二進(jìn)制格式,你基本上不用考慮任何文件細(xì)節(jié),它會(huì)幫你干凈利落地完成讀寫?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ì)象到它們本來的格式。
dumps()函數(shù)執(zhí)行和dump() 函數(shù)相同的序列化,但是與dump不同的dumps并不將轉(zhuǎn)換后的字符串寫入文件,而是將所得到的轉(zhuǎn)換后的數(shù)據(jù)以字符串的形式返回。
loads()函數(shù)執(zhí)行和load()函數(shù)一樣的反序列化。 loads接受一個(gè)字符串參數(shù),將字符串解碼成為python的數(shù)據(jù)類型,函數(shù)loads和dumps進(jìn)行的是互逆的操作。
cPickle是pickle得一個(gè)更快得C語言編譯版本。
pickle的dump和load相當(dāng)于java的序列化和反序列化操作
#! /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 讀寫權(quán)限 r b 讀寫到二進(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ì)象可以以任何方式處理如通過網(wǎng)絡(luò)傳輸 obj1 = cPickle.dumps(obj) print type(obj1) #輸出:print obj1 #輸出:python專用的存儲(chǔ)格式 obj2 = cPickle.loads(obj1) print type(obj2) #輸出: 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的分析問題的解答就分享到這里了,希望以上內(nèi)容可以對(duì)大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識(shí)。