序列化json+pickle+时间time+datetime+取随机数random——day16

1.什么是序列化
序列化就是将内存中的数据类型转成另外一种格式
即:
字典---------序列化--------->其他的格式--------------->存到硬盘
硬盘---读取---->其他格式----------反序列化-------->字典
2.为什么要序列化
——1.持久保存程序的运行状态
——2.数据的跨平台性
3如何序列化
json:
优点:这种格式是一种通用的格式,所有编程语言都能识别
缺点:不能识别所有python类型
强调:json格式不能识别单引号

pickle
优点:能识别所有python类型
缺点:只能被python这门编程语言识别

———————————————————————————————————
json:用法
dic={'k1':True,'k2':10,'k3':'egon','k4':'你好啊',}

# # 序列化
import json——————————先定义json
dic_json=json.dumps(dic)————把dic转换成json类型
print(dic_json,type(dic_json))
#
# # 持久化
with open('a.json',mode='wt',encoding='utf-8') as f:
f.write(dic_json)————————把转换后的存入文件

序列化+持久化
with open('a.json',mode='wt',encoding='utf-8') as f:
json.dump(dic,f)————————序列化+持久化————————


import json
# 从文件中读取json格式化的字符
with open('a.json',mode='rt',encoding='utf-8') as f:
dic_json=f.read()————————把内容从文件中读出来付给dic_json

# 反序列化
dic=json.loads(dic_json)————————然后在转换成字典的格式
print(dic,dic['k1'])

读取文件内容+发序列化
with open('a.json',mode='rt',encoding='utf-8') as f:
dic=json.load(f)——————————读取文件内容+发序列化————————
print(dic['k1'])
======================================================================
pickle的用法:

import pickle

dic={'k1':True,'k2':10,'k3':'egon','k4':'你好啊',}


#===========>1 pickle.dumps与pickle.loads

# dic_pkl=pickle.dumps({1,2,3,4})
# # print(dic_pkl)
#
# with open('b.pkl',mode='wb') as f:
# f.write(dic_pkl)

 

 

# with open('b.pkl',mode='rb') as f:
# s_pkl=f.read()
# s=pickle.loads(s_pkl)
# print(type(s))


#===========>2 pickle.dump与pickle.load
# with open('c.pkl',mode='wb') as f:
# pickle.dump(dic,f)

with open('c.pkl',mode='rb') as f:
dic=pickle.load(f)
print(dic,type(dic))
==========================================================
时间分为三种格式:
import time
1. 时间戳
print(time.time())

2. 格式化的字符
print(time.strftime('%Y-%m-%d %H:%M:%S %p'))————取时间

3. 结构化的时间对象
print(time.localtime())————————localtime本地时间
print(time.localtime().tm_hour)————————tm.hour提取本地时间的小时
print(time.localtime().tm_wday)
print(time.localtime().tm_yday)
print(time.gmtime())————————————格林尼治时间

时间转换

 


时间戳---->struct_time------->格式化的字符串
struct_time=time.localtime(123123)
print(struct_time)

print(time.strftime('%Y-%m-%d',struct_time))

格式化的字符串---->struct_time------->时间戳
struct_time=time.strptime('2017-03-11','%Y-%m-%d')
print(struct_time)

print(time.mktime(struct_time))

=============================================================
简单的时间转换方法 datetime
import datetime
print(datetime.datetime.now())————————取格式时间

print(datetime.datetime.fromtimestamp(1231231))————转换时间戳必须大于84600

print(datetime.datetime.now() + datetime.timedelta(days=3))——计算时间
print(datetime.datetime.now() - datetime.timedelta(days=3))
print(datetime.datetime.now() + datetime.timedelta(days=-3))
print(datetime.datetime.now() + datetime.timedelta(days=3,hours=3))

=============================================================
取随机值 random
import random

print(random.random())——————范围0到1之间的随机小数
print(random.randint(1,3))————————随机取值1到3可以取到1和3
print(random.randrange(1,3))————————随机取值1到3顾头不顾尾
print(random.uniform(1,3))————————取1到3之间的小数取不到1、2、3

print(random.choice([1,'a','c']))————————随机取列表的值
print(random.sample([1,'a','c'],2))————————随机取列表的2个值


item=[1,3,5,7,9]——————打乱顺序
random.shuffle(item)
print(item)

生成随机验证码
def make_code(max_size=5):——————生成随机验证码
res=''
for i in range(max_size):
num=str(random.randint(0,9))
alp=chr(random.randint(65,90))——————利用ASCII对照表chr把数值转成ascll码上的字母

res+=random.choice([num,alp])

return res


print(make_code(10))

posted @ 2018-12-05 16:19  WenChen-0o0  阅读(194)  评论(0编辑  收藏  举报