zoukankan      html  css  js  c++  java
  • 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码的排位确定的字母

     

  • 相关阅读:
    ST_Geometry效率的测试与分析
    ArcEngine中加载ArcGIS Server地图服务
    正则表达式入门教程&&经典Javascript正则表达式(share)
    实现文件上传,以及表单提交成功的回调函数
    Jquery+asp.net实现Ajax方式文件下载实例代码
    Jquery 中 ajaxSubmit使用讲解
    其它课程中的python---4、Matplotlib最最最最简单使用
    其它课程中的python---3、numpy总结(非常全)
    其它课程中的python---2、NumPy模块
    其它课程中的python---1、python基础
  • 原文地址:https://www.cnblogs.com/shicongcong0910/p/10278597.html
Copyright © 2011-2022 走看看