pickle序列化模块与json序列化模块
将一个对象转换成bytes类型的过程叫序列化,将bytes对象转换成为原对象的过程叫反序列化。pickle只支持python的数据类型,而json在其他语言中也可以使用。
----------欢迎加入我的python新手交流群851211580------------
import pickle
with open('../day7_time_os_sys/account.db','rb+') as f:
ret = pickle.load(f) #load方法接收一个文件对象作为参数,将文件中的数据转换为原来的对象类型。这叫做对象的反序列化。
ret[1000]['balance'] += 10000
pickle.dump(ret,f) # dump方法接收一个对象和文件流对象作为参数,将该对象转换为字节对象,并将字节对象写入文件,会将原文件覆盖掉
print(f.tell())
f.seek(0)
data = f.read()
ret2 = pickle.loads(data) #loads方法接收bytes字节对象作为参数,并将字节转换为原来的对象
ret2[1001]['balance'] +=1000
data2 = pickle.dumps(ret2) #dumps方法接收任意对象作为参数,并将其转换为bytes字节对象,这叫做对象的序列化。
f.write(data2)
json的用法与pickle一样,只是更适合不同编程语言类型之间通信,且loads方法返回的对象类型中的元素不太一样。