logging模块,序列化,random模块,json和pickle
Posted 小脂肪
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了logging模块,序列化,random模块,json和pickle相关的知识,希望对你有一定的参考价值。
1.logging
logging模块用来记录软件的各种状态.,开发人员可以通过日志的内容对程序进行修改.
import logging logging.debug(‘debug message‘) logging.info(‘info message‘) logging.warning(‘warning message‘) logging.error(‘error message‘) logging.critical(‘critical message‘)
默认情况下logging打印到标准输出中,只显示了大于warning级别的日志,这说明默认的日志级别设置warning之上的.
日志等级为:debug < info < warning < error < critical
函数版:
屏幕和文件二选一,写入文件中的默认编码是GBK
python中定义好的,直接用就可以
mport logging logging.basicConfig( #logging的基本配置 level=logging.DEBUG, #对logging的显示权限等级进行设置 format=‘%(asctime)s - %(name)s - [%(lineno)d] - %(message)s‘, ) #定义一个模板 logging.debug("10") logging.info(‘20‘) logging.warning(‘30‘) logging.error(‘40‘) logging.critical(‘50‘) 结果: 2019-01-16 15:33:48,570 - root - [9] - 10 2019-01-16 15:33:48,576 - root - [10] - 20 2019-01-16 15:33:48,577 - root - [11] - 30 2019-01-16 15:33:48,577 - root - [12] - 40 2019-01-16 15:33:48,577 - root - [13] - 50
面向对象版(自己制定)
屏幕和文件都可以,支持多个输出方式,写入文件中的编码可以自己定义
自己制定的需要我们一步一步来操作
import logging logger = logging.getLogger("开发日志") #获取一个新的日志 fomatter = logging.Formatter(‘%(asctime)s - %(name)s-%(lineno)d - %(message)s‘)#定义一个模板 ah = logging.StreamHandler() #生成一个屏幕流 ch = logging.FileHandler(‘aa.log‘,‘a‘,encoding=‘utf-8‘) #生成一个文件流 ch.setFormatter(fomatter) #将定义的模板绑定给我们存储日志的流 ah.setFormatter(fomatter) logger.setLevel(logging.DEBUG) #设置日志的记录等级setLevel(logging.DEBUG) logger.addHandler(ch) #将流加载到日志中 logger.addHandler(ah) logger.debug("10") logger.info(‘20‘) logger.error(‘30‘) logger.warning(‘40‘) logger.critical(‘50‘)
2.序列化
将原本的字典、列表等内容转换成一个字符串的过程就叫做序列化。
2.1 json
多个语言都在通用
序列号:
dump # 将对象转成字符存储在文件中
load #将文件中的字符转成对象
dump和load存储
dumps #将对象转成字符串
loads #将字符串转换成对象
dumps和loads不存储
import json dic ={‘1‘:2,‘2‘:3} lst = [1,23,4,56,7,8] f = open(‘mm.txt‘,‘w‘,encoding=‘utf-8‘ json.dump(dic,f) #将字典存放到文件mm.txt中,并且字典格式不变
import json dic ={‘1‘:2,‘2‘:3} lst = [1,23,4,56,7,8] f = open(‘mm.txt‘,‘r‘,encoding=‘utf-8‘) s = json.load(f) #文件中的内容 读取出来 并且dic的格式不变依旧是字典形式 print(s)
2.2 pickle
import pickle
python中自带的模块 也有dump,load,dumps,loads四个模块跟json相似
dump 将python中的数据结构转化成二进制数,存储到文件中
load 将文件中的二进制数转换成python中的数据结构
dumps是将python的数据结构转换成二进制的文件
loads是将二进制的文件转换成python的数据结构
3.random
随机
3.1 随机的小数
print(random.random()) #0-1之间的小数 print(random.uniform(1,5)) #0-5之间的小数
3.2 随机整数
print(random.randint(1,25)) #1-25之间的整数
3.3指定范围
print(random.randrange(1,10,2))#指定范围 1-10之间的偶数
3.4 抽牌
lst = [99,88,77,5,67] print(lst[random.randrange(len(lst))]) #随机抽取lst中的下标
lst = [99,88,77,5,67] print(random.choice(lst)) #随机抽取一个 choice(可迭代对象)
lst = [99,88,77,5,67] print(random.choices(lst,k=3))#随机抽取k个值 但是容易出现重复
lst = [99,88,77,5,67] print(random.sample(lst,k=2)) #随机抽取k个值 但是不出现重复
3.5 洗牌 顺序进行打乱
lst = [99,88,77,5,67] random.shuffle(lst) #顺序打乱 print(lst)
3.6 字母
print(chr(random.randrange(65,91))),print(chr(random.randrange(65,91))), #随机出现字母 数字是根据asscii码的排位确定的字母
以上是关于logging模块,序列化,random模块,json和pickle的主要内容,如果未能解决你的问题,请参考以下文章
logging模块,collections模块,random模块