經常遇到在Python程序運行中得到了一些字符串、列表、字典等數據,想要長久的保存下來,方便以后使用,而不是簡單的放入內存中關機斷電就丟失數據。
這個時候Pickle模塊就派上用場了,它可以將對象轉換為一種可以傳輸或存儲的格式。
python的pickle模塊實現了基本的數據序列和反序列化。通過pickle模塊的序列化操作我們能夠將程序中運行的對象信息保存到文件中去,永久存儲;通過pickle模塊的反序列化操作,我們能夠從文件中創建上一次程序保存的對象。
pickle模塊主要有dump()函數和load()函數
pickle.dump()方法:
這個方法的語法是:pickle.dump(對象, 文件,[使用協議])
提示:將要持久化的數據“對象”,保存到“文件”中,使用有3種,索引0為ASCII,1是舊式2進制,2是新式2進制協議,不同之處在於后者更高效一些。
默認的話dump方法使用0做協議。
Pickle模塊的load方法
load()方法的作用正好與上面的dump()方法相反,上面是序列化數據,這個方法作用是反序列化。
語法:pickle.load(文件)
提示:從“文件”中,讀取字符串,將它們反序列化轉換為Python的數據對象,可以正常像操作數據類型的這些方法來操作它們
實例操作
1 保存Python對象到文件中
my_list = [123,3.14,'春秋大夢',[123,'rrr']] ##自己定義一個列表
>>> my_list
[123, 3.14, '春秋大夢', [123, 'rrr']]
>>> import pickle ##導入pickle模塊
>>> pickle_file = open('d:\\test\\天氣預報\\qianqi.pkl','wb') ##注意打開方式一定要二進制形式打開
>>> pickle.dump(my_list, pickle_file) ##把列表永久保存到文件中
>>>pickle_file.close() ##關閉文件
2 使用pickle模塊從文件中重構python對象
>>> import pickle
>>> pkl_file = open('d:\\test\\天氣預報\\qianqi.pkl','rb') ## 以二進制方式打開文件
>>> pickle.load(pkl_file) ##用load()方法把文件內容序列化為Python對象
[123, 3.14, '春秋大夢', [123, 'rrr']]
>>> pkl_file.close()