对象持久化:
1.扁平文件:
a = [1, 2, 3, 4, 5]
# 写入数据
# with open('data.txt', 'w', encoding='utf-8') as f:
# f.write(str(a))
# 读取数据
with open('data.txt', 'r', encoding='utf-8') as f:
le = eval(f.read())
print(le)
print(type(le))
2.pickle方法
import pickle
person = {'name': 'Tom', 'age': 20}
s = pickle.dumps(person) # 将对象person序列化为字节字符串
# print(s) # b'\x80\x03}q\x00(X\x04\x00\x00\x00nameq\x01X\x03\x00\x00\x00Tomq\x02X\x03\x00\x00\x00ageq\x03K\x14u.'
p = pickle.loads(s)
# print(p) # {'name': 'Tom', 'age': 20}
pickle.dump(person, open('pickle_db', 'wb')) # 将person序列化并写入文件(二进制)
p = pickle.load(open('pickle_db', 'rb')) # 读入文件(二进制)
print(p) # {'name': 'Tom', 'age': 20}
3.shelve方法
import shelve
person = {'name': 'Tom', 'age': 20}
db = shelve.open('shelve_person') # 返回变量db,类似字典表数据结构使用方法
db['p'] = person # 将person序列化存入
temp = db['p'] # 读出p对应的person,返回person数据给temp
print(temp) # {'name': 'Tom', 'age': 20}
print(type(temp)) # <class 'dict'>
4.自定义类用shelve运用
import shelve
class Student:
def __init__(self, name, age):
self.name = name
self.age = age
def __str__(self):
return self.name
def writr_shelve():
s = Student('Tom', 20)
db = shelve.open('shelve_stu')
db['s'] = s
db.close()
def read_shelve():
db = shelve.open('shelve_stu')
st = db['s']
db.close()
print(st)
writr_shelve()
read_shelve() # Tom