对象持久化 扁平文件 pickle shelev 数据库 ORM
扁平文件 ——文本文件
with open(‘data.txt’,‘w’,encoding=‘utf8’) as f:
f.write(‘优品课堂\n’)
f.write(‘codeclassroom.com’)
“”"
scrose=[88,79,99,80]
#写入文件
def write_scrose():
with open(‘data_list.txt’,‘w’,encoding=‘utf8’)as f:
f.write(str(scrose))
print (‘文件写入完成’)
#读取文件
def read_scrose():
with open(‘data_list.txt’,‘r’,encoding=‘utf8’)as f:
lst = eval(f.read())
lst[0]=22
print (lst)
if name==‘main’:
read_scrose()
“”"
#提供模块,将python类型对象序列化字符串或者本地文件
pickle 这两个的作用是序列化成字符串
# 中dumps:将对象序列化成字符串
# 中loads,将字符串反序列化成字符串
import pickle
person={‘name’:‘Tom’,‘age’:20}
#方法1转换成字符串,将字符串存在文本里面,读取时,再还原
s=pickle.dumps(person)#将传来的对象序列化成字符串
print (s)
p=pickle.loads(s)#从字符串载入还原反序列化对象
print §
pickle中序列化对象到文件
中dump(obj,file)
中load(file)
pickle.dump(person,open(‘pickle_db’,‘wb’))#先序列化到文件
p=pickle.load(open(‘pickle_db’,‘rb’))#再反序列化
print §
缺陷:文件中所有的都需要反序列化,很复杂
#shelve 将多个对象存储再一个文件中,和字典表类似,一一对应,方便提取
shelve .open(‘dbfile’)
shelve.close()
db[‘key’]=obj
len(db)
del db[‘key’]
import shelve
scores=[99,87,90]
student={‘name’:‘Mike’,‘age’:20}
db=shelve.open(‘shelve_student’)
db[‘s’]=student
db[‘scores’]=scores
print (len(db))
temp_student=db[‘s’]
print (temp_student)
db[‘scores’]
#如果想删除某一项
del db[‘scores’]
print (len(db))
print (db[‘s’])
#先定义类的过程
import shelve
class Student:
def init(self,name,age):
self.name=name
self.age=age
def str(self):
return self.name
# return self.age
def write_shelve():
s=Student(‘Tom’,20)
db=shelve.open(‘shelve_student_db’)
db[‘s’]=s
db.close()
def read_shelve():
db=shelve.open(‘shelve_student_db’)
st=db[‘s’]
print (st)
print (st.name)
print (st.age)
db.close()
if name==‘main’:
read_shelve()