Pickle模塊用來對Python對象執(zhí)行序列化和反序列化勘伺。Python的任何對象都可以通過它永久保存到硬盤文件。Pickle實(shí)際上是先把Python對象(list昌腰、dict开伏、class等)轉(zhuǎn)換為字符流,這個字符流包含反序列化(從字符流構(gòu)建對象)所需的所有數(shù)據(jù)遭商。
No More Bullshit固灵!
首先導(dǎo)入pickle模塊:
import pickle
pickle有兩個主要方法。第一個是dump-把對象導(dǎo)入到文件劫流;第二個是load-從文件中加載對象巫玻。
示例:
import pickle
l1 = ['data1','data2','data3', 'data4']
file = open("testfile",'wb')
# 把l1保存到文件
pickle.dump(l1, file)
file.close()
####################################
file = open("testfile",'r')
# 從文件中加載保存的對象
l2 = pickle.load(file)
print(l2)
print(l1 == l2)
輸出:
Screen Shot 2016-01-31 at 18.32.04
你可以看一下testfile文件中的內(nèi)容丛忆,里面是可讀的文件(不是二進(jìn)制流)。
$ cat testfile
(lp0
S'data1'
p1
aS'data2'
p2
aS'data3'
p3
aS'data4'
p4
pickle用法總結(jié):
把程序執(zhí)行狀態(tài)保存到文件仍秤,在下次啟動程序時恢復(fù)到退出時的狀態(tài)熄诡。
在分布式系統(tǒng)中通過TCP連接發(fā)送數(shù)據(jù)。
在數(shù)據(jù)庫中存儲Python對象
把不可讀的Python對象轉(zhuǎn)為字符串诗力,可以用來做字典的key(可以用來做緩存)凰浮。
有一點(diǎn)需要注意,pickle還有一個c版本cpickle苇本,它的執(zhí)行效率是pickle的1000倍袜茧。
為了兼容,導(dǎo)入方法如下:
try:
import cPickle as pickle
except ImportError:
import pickle
雖然cpickle效率比較高圈澈,但是不建議使用惫周,因?yàn)椋?br>
pickle可以處理unicode對象
pickle是純Python寫的,調(diào)試簡單