亚洲熟女综合色一区二区三区,亚洲精品中文字幕无码蜜桃,亚洲va欧美va日韩va成人网,亚洲av无码国产一区二区三区,亚洲精品无码久久久久久久

自學(xué)Python教程【第六十三節(jié)】pickle

同學(xué)們!歡迎大家來(lái)到自學(xué)Python教程教室,上一講我們分享了關(guān)于在哪里些Python的問(wèn)題——Python shell,這節(jié)課我們學(xué)習(xí)pickle的相關(guān)內(nèi)容。

在之前的課程中,我們有講到通過(guò)文件來(lái)保存、中轉(zhuǎn)數(shù)據(jù)(參見第29、30、31課)。在使用文件存儲(chǔ)時(shí),通常需要對(duì)數(shù)據(jù)進(jìn)行一些處理,按照一定的規(guī)范把數(shù)據(jù)整理成文本,再寫入文件中。下次使用時(shí),從文件中讀出文本,再按照此規(guī)范解析這些數(shù)據(jù)。

這種將數(shù)據(jù)轉(zhuǎn)成文本的過(guò)程又被稱為“序列化”,即將對(duì)象狀態(tài)轉(zhuǎn)換為可保持或傳輸?shù)母袷降倪^(guò)程。對(duì)應(yīng)的,從序列化的格式中解析對(duì)象狀態(tài)的過(guò)程被稱為“反序列化”。

在之前的課程和示例中,我們都自己手動(dòng)實(shí)現(xiàn)了這個(gè)過(guò)程。其實(shí) Python 提供了一個(gè)標(biāo)準(zhǔn)模塊來(lái)做這件事,就是 pickle。它可以把任何 Python 對(duì)象存儲(chǔ)在文件中,再把它原樣取出來(lái)。

來(lái)看一下存儲(chǔ)的過(guò)程:

import pickle 
test_data = ['Save me!', 123.456, True]
f = file('test.data', 'w')
pickle.dump(test_data, f)
f.close()

這樣,我們就把 test_data 這個(gè) list 存儲(chǔ)在了文件 test.data 中。你可以用文本編輯器打開 test.data 查看里面的內(nèi)容:

(lp0 
S'Save me!'
p1
aF123.456
aI01
a.

這就是經(jīng) pickle 序列化后的數(shù)據(jù),隱約可以看到之前對(duì)象的影子。你可能無(wú)法看出這個(gè)文件的規(guī)律,這沒關(guān)系,Python 能看懂就可以了。

下面取存儲(chǔ)的過(guò)程:

import pickle 
f = file('test.data')
test_data = pickle.load(f)
f.close()
print test_data

控制臺(tái)的輸出:

['Save me!', 123.456, True]

和存儲(chǔ)前的數(shù)據(jù)是一致的。

如果你想保存多個(gè)對(duì)象,一種方法是把這些對(duì)象先全部放在一個(gè)序列中,在對(duì)這個(gè)序列進(jìn)行存儲(chǔ):

a = 123 
b = "hello"
c = 0.618
data = (a, b, c)
...
pickle.dump(data, f)

另一種方法就是依次保存和提?。?/p>

...

pickle.dump(a, f)

pickle.dump(b, f)

pickle.dump(c, f)

...

x = pickle.load(f)

y = pickle.load(f)

z = pickle.load(f)

dump 方法可以增加一個(gè)可選的參數(shù),來(lái)指定用二進(jìn)制來(lái)存儲(chǔ):

pickle.dump(data, f, True)

而 load 方法會(huì)自動(dòng)檢測(cè)數(shù)據(jù)是二進(jìn)制還是文本格式,無(wú)需手動(dòng)指定。

Python 還提供了另一個(gè)模塊 cPickle,它的功能及用法和 pickle 模塊完全相同,只不過(guò)它是用C語(yǔ)言編寫的,因此要快得多(比pickle快1000倍)。因此你可以把上述代碼中的 pickle 全部替換為 cPickle,從而提高運(yùn)行速度(盡管在這個(gè)小程序中影響微乎其微)。

好啦,今天的分享到這里就結(jié)束了,希望大家能夠持續(xù)關(guān)注馬哥教育官網(wǎng),每天都會(huì)有大量?jī)?yōu)質(zhì)內(nèi)容與大家分享歐!免責(zé)聲明:內(nèi)容和圖片源自網(wǎng)絡(luò),版權(quán)歸原作者所有,如有侵犯您的原創(chuàng)版權(quán)請(qǐng)告知,我們將盡快刪除相關(guān)內(nèi)容。

聲明:文章來(lái)源于網(wǎng)絡(luò),侵刪!

相關(guān)新聞

歷經(jīng)多年發(fā)展,已成為國(guó)內(nèi)好評(píng)如潮的Linux云計(jì)算運(yùn)維、SRE、Devops、網(wǎng)絡(luò)安全、云原生、Go、Python開發(fā)專業(yè)人才培訓(xùn)機(jī)構(gòu)!