python中有关数据持久存储:pickle模块的基本使用
python的pickle模塊實現了基本的數據序列和反序列化。通過pickle模塊的序列化操作我們能夠將程序中運行的對象信息保存到文件中去,永久存儲;通過pickle模塊的反序列化操作,我們能夠從文件中創建上一次程序保存的對象。
基本接口:
pickle.dump(obj, file, [,protocol])
注解:將對象obj保存到文件file中去。
protocol為序列化使用的協議版本,0:ASCII協議,所序列化的對象使用可打印的ASCII碼表示;1:老式的二進制協議;2:2.3版本引入的新二進制協議,較以前的更高效。其中協議0和1兼容老版本的python。protocol默認值為0。
? ? ? ? ? ? ? 如果未指定協議,則使用協議0。如果協議被指定為負值或highest_protocol,最高協議版本將使用。
file:對象保存到的類文件對象。file必須有write()接口,?file可以是一個以'w'方式打開的文件或者一個StringIO對象或者其他任何實現write()接口的對象。如果protocol>=1,文件對象需要是二進制模式打開的。
pickle.load(file)
注解:從file中讀取一個字符串,并將它重構為原來的python對象。
file:類文件對象,有read()和readline()接口。
?
EX1:
import pickle
class account:
?def __init__(self, id, balance):
??self.id = id
??self.balance = balance
?def deposit(self, amount):
??self.balance += amount
?def withdraw(self, amount):
??self.balance -= amount
myac = account('123', 100)
myac.deposit(800)
myac.withdraw(500)
fd = open( "archive", "w" )?
pickle.dump( myac, fd)————————#永久存儲
fd.close()
myac.deposit(200)
print myac.balance
fd = open( "archive", "r" )?
myac = pickle.load( fd )——————————————#重構對象
fd.close()
print myac.balance
————————————————————600,,40
?
EX2:
#使用pickle模塊將數據對象保存到文件
import pickle
data1 = {'a': [1, 2.0, 3, 4+6j],
'b': ('string', u'Unicode string'),
'c': None}
selfref_list = [1, 2, 3]
selfref_list.append(selfref_list)
output = open('data.pkl', 'wb')
# Pickle dictionary using protocol 0.
pickle.dump(data1, output)
# Pickle the list using the highest protocol available.
pickle.dump(selfref_list, output, -1)
output.close()
轉載于:https://www.cnblogs.com/418710487cord/p/6756100.html
總結
以上是生活随笔為你收集整理的python中有关数据持久存储:pickle模块的基本使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 防盗链原理(转)
- 下一篇: ubuntu下载软件安装包