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模块

常用模块

模块总结

os模块 hashlib模块 random模块 logging模块 json模块

常用模块知识