Python学习Day16
一、包的使用 1.什么是包 包就是一个含有__init__.py文件的文件夹 2.为何要用包 3.如何用包 import sys sys.path.append(r'D:\脱产5期内容\day16\dir') import aaa # aaa——————》__init__.py print(aaa.xxx) aaa.func1() aaa.func2() aaa.func3() aaa.func4() aaa.f1() aaa.f2() aaa.f3() aaa.f4() aaa.fff() 二、json与pickle模块 1.什么是序列化 序列化就是将内存中的数据类型转成另外一种格式 即: 字典———————————序列化———————————————》其他的格式———————————————————————》存到硬盘 硬盘————————————读取————————————————》其他的格式————————反序列化———————》字典 2.为什么要序列化 1.持久保存程序的运行状态 2.数据的跨平台交互 3.如何序列化 json: 优点:这种格式是一种通用的格式,所有编程语言都能识别 缺点:不能识别所有python类型 强调:json格式不能识别单引号 pickle: 优点:能识别所有python类型 缺点:只能被python这门编程语言识别 ====================================json import json dic={'k1':True,'k2':10,'k3':'egon','k4':'你好啊'} 序列化 dic_json=json.dumps(dic) 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.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)) 三、time与datatime模块 时间分为三种格式: import time """ 1.时间戳 print(time.time()) 2.格式化的字符 print(time.strftime('%Y-%m-%d %H:%M:%S %p')) 3.结构化的时间对象 print(time.localtime()) print(time.localtime().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)) """ 格式化的字符串时间(format string)———strptime———>结构化的时间(struct_time)———mktime—————————————>时间戳(timetamp) 格式化的字符串时间(format string)<——strftime————结构化的时间(struct_time)<——gmtime\localtime————时间戳(timetamp) import datetime print(datatime.datetime.now()) print(datatime.datatime.fromtimestamp(1231231)) print(datatime.datatime.now()+datatime.timedelta(days=3)) print(datatime.datatime.now()-datatime.timedelta(days=3)) print(datatime.datatime.now()+datatime.timedelta(days=-3)) 四、random模块 import random print(random.random())==================取值范围(0,1)----float大于0且小于1之间的小数 print(random.randint(1,3))==============取值范围[1,3]---------大于等于1且小于等于3之间的整数 print(random.randrange(1,3))============取值范围[1,3)---------大于等于1且小于3之间的整数 print(random.uniform(1,3))==============取值范围(1,3)----float大于1小于3的小数 print(random.choice([1,'a','c']))=======1或者23或者[4,5] print(random.sample([1,'a','c'],2))=====列表元素任意2个组合 打乱item的顺序,相当于“洗牌” 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)) res+=random.choice([num,alp]) return res print(make_code(10))