模块2
Posted liuafan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了模块2相关的知识,希望对你有一定的参考价值。
logging模块.
collections模块.
time模块.
random模块.
logging 模块
logging 日志
记录.花钱的,(淘宝)败家的,
访问的记录,
员工信息,debug等等都需要日志.
1,被动触发: 与异常处理配合.访问记录.
2, 主动触发:检测运维人员输入的指令,检测服务器的重要信息,访问记录.等等.
高配版:
# 第一版:只输入文件中. # import logging # logger = logging.getLogger() # 创建logger对象. # fh = logging.FileHandler(‘高配版logging.log‘,encoding=‘utf-8‘) # 创建文件句柄 # # # 吸星大法 # logger.addHandler(fh) # # logging.debug(‘debug message‘) # logging.info(‘info message‘) # logging.warning(‘warning message‘) # logging.error(‘error message‘) # logging.critical(‘critical message‘) # 第二版:文件和屏幕都存在. # import logging # logger = logging.getLogger() # 创建logger对象. # fh = logging.FileHandler(‘高配版logging.log‘,encoding=‘utf-8‘) # 创建文件句柄 # sh = logging.StreamHandler() #产生了一个屏幕句柄 # # # 吸星大法 # logger.addHandler(fh) #添加文件句柄 # logger.addHandler(sh) #添加屏幕句柄 # # # logging.debug(‘debug message‘) # logging.info(‘info message‘) # logging.warning(‘warning message‘) # logging.error(‘error message‘) # logging.critical(‘critical message‘) # 第三版:文件和屏幕都存在的基础上 设置显示格式. # import logging # logger = logging.getLogger() # 创建logger对象. # fh = logging.FileHandler(‘高配版logging.log‘,encoding=‘utf-8‘) # 创建文件句柄 # sh = logging.StreamHandler() #产生了一个屏幕句柄 # formatter = logging.Formatter(‘%(asctime)s - %(name)s - %(levelname)s - %(message)s‘) # # # # 吸星大法 # logger.addHandler(fh) #添加文件句柄 # logger.addHandler(sh) #添加屏幕句柄 # sh.setFormatter(formatter) # 设置屏幕格式 # fh.setFormatter(formatter) # 设置文件的格式 (这两个按照需求可以单独设置) # # # logging.debug(‘debug message‘) # logging.info(‘info message‘) # logging.warning(‘warning message‘) # logging.error(‘error message‘) # logging.critical(‘critical message‘) #第四版 文件和屏幕都存在的基础上 设置显示格式.并且设置日志水平. # import logging # logger = logging.getLogger() # 创建logger对象. # fh = logging.FileHandler(‘高配版logging.log‘,encoding=‘utf-8‘) # 创建文件句柄 # sh = logging.StreamHandler() #产生了一个屏幕句柄 # formatter = logging.Formatter(‘%(asctime)s - %(name)s - %(levelname)s - %(message)s‘) # # logger.setLevel(logging.DEBUG) # #如果你对logger对象设置日志等级.那么文件和屏幕都设置了. # #总开关 默认从warning开始,如果想设置分开关:必须要从他更高级:(ERROR,critical)从这来个开始. # # # 吸星大法 # logger.addHandler(fh) #添加文件句柄 # logger.addHandler(sh) #添加屏幕句柄 # sh.setFormatter(formatter) # 设置屏幕格式 # fh.setFormatter(formatter) # 设置文件的格式 (这两个按照需求可以单独设置) # fh.setLevel(logging.DEBUG) # # logging.debug(‘debug message‘) # logging.info(‘info message‘) # logging.warning(‘warning message‘) # logging.error(‘error message‘) # logging.critical(‘critical message‘)
collections模块
collections 模块给你提供的就是一些特殊的数据类型. namedtuple tu = (1,2) print(tu[0],tu[1]) from collections import namedtuple point = namedtuple(‘Point‘,[‘x‘,‘y‘]) p = point(10,30) # p = (x=10,y=30) print(p.x) print(p.y) print(p[0]) print(p[1]) deque 双端队列 from collections import deque q = deque([‘a‘,‘b‘,‘c‘,‘d‘,‘e‘]) print(q) q.append(666) #添加最右边 q.append(777) q.appendleft(111) #从最左边添加 q.appendleft(222) q.pop() # 从右边删除 q.popleft() # 从左边删除 q.popleft() print(q) queue队列 原则:先进先出.fifo 栈: 先进后出.
OrderedDict 按照键的添加值得顺序进行排列 dic = {} dic[‘name‘] = ‘alex‘ dic[‘age‘] = ‘1000‘ dic[‘sex‘] = ‘男‘ print(dic) from collections import OrderedDict # od = OrderedDict() # od[‘name‘] = ‘alex‘ # od[‘age‘] = ‘1000‘ # od[‘sex‘] = ‘男‘ # print(od) 装逼版: d = dict([(‘a‘, 1), (‘b‘, 2), (‘c‘, 3)]) print(d) from collections import OrderedDict od1 = OrderedDict([(‘a‘, 1), (‘c‘, 3), (‘b‘, 2),]) print(od1) l1 = [11,22,33,44,55,77,88,99,90] dic = {} for i in l1: if i > 66: if ‘key1‘ not in dic: dic[‘key1‘] = [] dic[‘key1‘].append(i) else: if ‘key2‘ not in dic: dic[‘key2‘] = [] dic[‘key2‘].append(i) print(dic)
##defaultDict(可以被调用的) 给这个字典的所有的键配一个默认的值
from collections import defaultdict l1 = [11, 22, 33,44,55,66,77,88,99,90] my_dict = defaultdict(list) my_dict[‘key1‘] my_dict[‘key2‘] print(my_dict) my_dict = defaultdict(list) for value in l1: if value>66: my_dict[‘k1‘].append(value) else: my_dict[‘k2‘].append(value) print(my_dict) dic1 = {} #---> dic1={1:5,2:5,3:5.....20:5}
格外一个题 ------------------------------------------- for i in range(1,21): dic1[i] = 5 print(dic1) dic1 = {x:5 for x in range(1,21)} dic1 = dict.fromkeys(range(1,21),5)
------------------------------------------------- Counter 自动计数
dic1 = defaultdict(lambda :5) for i in range(1,21): dic1[i] print(dic1) from collections import Counter c = Counter(‘abcdeabcdabcabafkjdslajlkfd‘) print(c) 自动计算 a 有多少个 b有多少个 c 有多少个
random模块
#随机
import random print(random.random()) # 0~1 之间的小数 print(random.uniform(1,3)) # 1~3小数 print(random.randint(1,5)) # 1<=x<=5顾头也顾尾 print(random.randrange(1,10,2)) # 1<=x<10 的奇数 顾首不顾尾 print(random.choice({1,‘23‘,2,3})) # 任选一个 常用 print(random.choice(‘fdsjafdsfgdsagfdsa‘)) # 任选一个 常用 random.sample([1,1,1,1,1,6,7,8,9,10],2) # #列表元素任意2个组合 item = [i for i in range(1,14)] random.shuffle(item) # 打乱顺序 print(item)
以上是关于模块2的主要内容,如果未能解决你的问题,请参考以下文章
模块讲解---time模块,datetime模块,random模块,hashlib模块和hmac模块,typing模块,requests模块,re模块