一.序列化概念
什么是序列化?
内存中的数据结构转成中间格式(json(所有编程语言通用)和pickle)存储到硬盘或基于网络状态
反序列化:
硬盘网络传来的数据格式转换成内存的数据结构
为什么
1.可以保存某一时间点的程序的运行状态
2.实现数据的跨平台交互 py和java的配合
json:优点是跨平台性好 支持常用的py数据类型 缺点是只能对应py的部分数据 例如不支持py的集合 还有自定义的数据类型
pickle:优点是可以识别所有的py的数据 缺点是只可以被python识别 不能跨平台
二.Json
import json dic={'name':'alvin','age':23,'sex':'male'} print(type(dic))#<class 'dict'> #序列化 j_str=json.dumps(dic) print(type(j_str))#<class 'str'>
#写入文件
with open('序列化对象','w')as f:
f.write(j_str)
with open () as f:
json.dump(dic,f)
两步并作一步:
#文件读取
with open() as f:
j_str=f.read()
#转成内存的
dic=json.loads(j_str)
json不能识别单引号 只能识别双引号
三.pickle
import pickle dic={'name':'alvin','age':23,'sex':'male'} print(type(dic))#<class 'dict'> j=pickle.dumps(dic) print(type(j))#<class 'bytes'> f=open('序列化对象_pickle','wb')#注意是w是写入str,wb是写入bytes,j是'bytes' f.write(j) #-------------------等价于pickle.dump(dic,f) f.close() -------------------------反序列化 import pickle f=open('序列化对象_pickle','rb') data=pickle.loads(f.read())# 等价于data=pickle.load print(data['age'])
时间模块
时间戳
格式化字符串 time.strftime
结构化时间time.localtime time.gmtime
datetime.datetime.now()
时间戳经结构化转成格式化
random模块