zoukankan      html  css  js  c++  java
  • configparser logging collections 模块

     

    configparser 模块:

    这是一个写入的模块就是把你的信息给写入的模块

    #这是一个把信息写入example文件内
    import configparser
    config = configparser.ConfigParser()
    config['DEFAULT'] = {'a':45, # 默认的语句
    'Comparseeion':'yes',
    'CompressionLevel':'9',
    'ForwarXll':'yes'
    }
    config['bitbucjet.org'] = {'User':'hg'} #建立一个节 后面的表示这个节的内容
    config['c'] = {'123':4}
    with open ('example.ini','w')as f:
    config.write(f)
    import configparser
    config = configparser.ConfigParser()
    config.read('example.ini')
    print(config.sections()) # sections是读取你所有的节的名字
    print('bitbucket.org'in config) # 验证这个节点的名字是不是在这这个文件中

    下面是练习精讲

    # import configparser
    # config = configparser.ConfigParser()
    # config["DEFAULT"] = {'a': '45',
    #                       'Compression': 'yes',
    #                      'CompressionLevel': '9',
    #                      'ForwardX11':'yes'
    #                      }
    #
    # config['bitbucket.org'] = {'User':'hg'}
    # config['topsecret.server.com'] = {'Host Port':'50022','ForwardX11':'no'}
    # with open('example.ini', 'w') as f:
    #    config.write(f)
    
    # import configparser
    # config = configparser.ConfigParser()
    # config.read('example.ini')
    # print(config.sections())        #  查看所有的节 但是默认不显示DEFAULT []
    # print('bitbucket.org' in config) # True  验证某个节是否在文件中
    # print('bytebong.com' in config) # False
    # print(config['bitbucket.org']["user"])  # hg 查看某节下面的某个配置项的值
    # print(config['DEFAULT']['Compression']) #yes
    # print(config['topsecret.server.com']['ForwardX11'])  #no
    # print(config['bitbucket.org'])          #<Section: bitbucket.org>
    # for key in config['bitbucket.org']:     # 注意,有default会默认default的键
    #     print(key)
    # print(config.options('bitbucket.org'))  # 同for循环,找到'bitbucket.org'下所有键
    # print(config.items('bitbucket.org'))    #找到'bitbucket.org'下所有键值对
    # print(config.get('bitbucket.org','compression')) # yes       get方法Section下的key对应的value
    
    # import configparser
    #
    # config = configparser.ConfigParser()
    # config.read('example.ini')
    # config.add_section('yuan')
    # config.remove_section('bitbucket.org')
    # config.remove_option('topsecret.server.com',"forwardx11")
    # config.set('topsecret.server.com','k1','11111')
    # config.set('yuan','k2','22222')
    # config.write(open('new2.ini', "w"))
    
    
    # section  可以直接操作它的对象来获取所有的节信息
    # option  可以通过找到的节来查看多有的项
    View Code

    logging模块:

    可以通过一个参数去控制全局的日志输出情况
    可以帮助开发者同时向文件屏幕输出信息

     你也可以print来显示你所要显示的信息 但是logger可以控制你的显示的 信息 如果你是print的话那么你就会要一个一个删除或者添加 如过你不想显示的话那么就可以控制setLevel来控制你的输出显示

    logging不会自动帮你打印 需要你自己手动打印

    loggin可以设置简单模式和复杂模式 复杂模式的就是logger的

    有复杂模式 getlogger  和简单模式basicConfig

    
    

     logging模式不能同时输出到文件和屏幕而logger模式可以

    这是logging的模式

    import logging
    logging.basicConfig(level = logging.DEBUG,  
                        format = '%(asctime)s %(filename)s [line:%(lineno)d]%(levelname)s %(message)s'
                        )  #这个是必须这样写的    默认模块  #这个level后面是可以更改它的显示的
    logging.debug('debug message')  #调式模式级别最低
    logging.info('infomessage') # info显示正常信息
    logging.warning('warning message') # waring 显示警告信息
    logging.error('error message') # error 显示错误信息
    logging.critical('critical message')# critical 显示严重错误信息


    下面设置更改错误显示 只需要修改level就可以了
    logging.basicConfig(level = logging.ERROR,
    format = '%(asctime)s %(filename)s [line:%(lineno)d]%(levelname)s %(message)s'
    ) #我设置从error开始报错
    logging.debug('debug message') #调式模式级别最低
    logging.info('infomessage') # info显示正常信息
    logging.warning('warning message') # waring 显示警告信息
    logging.error('error message') # error 显示错误信息
    logging.critical('critical message')# critical 显示严重错误信息

     


    下面是复杂模式就是实例化logger 实例logging的对象
    import logging
    logger = logging.getLogger()  #实例化一个logger对象
    fh = logging.FileHandler('tset.log', encoding = 'utf-8')  #就是默认创建一个文件句柄 然后这个文件的格式 默认就是追加'a'
    
    sh = logging.StreamHandler()  #对当前屏幕的信息进行操作
    
    fmt = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
    fh.setFormatter(fmt) #  格式和文件句柄或者屏幕句柄关联 就是让格式化和文件关联
    sh.setFormatter(fmt)  #让你的格式化输出和屏幕相关联
    # 上面是默认显示的的 一般的显示错误信息都是从error开始的 你也可以用setLevel来让它的输出显示改变
    #
    # 比如想从warring开始显示错误信息就:
    # sh.setLevel(logging.WARNING)  # 这个是让你的显示错误信息从warning开始
    sh.setLevel(logging.ERROR)
    
    # setLevel是可以设置你的错误的信息的  你也可以直接用实例的对象直接调用setLevel那样打印的就是全部的错误信息
    
    # 吸星大法就是让你的信息互相关联
    logger.addHandler(fh)  # 和 logger的句柄关联
    logger.addHandler(sh)  #把你的上面的屏幕和logger对象关联
    logger.setLevel(logging.DEBUG)  #更改logger的错误显示
    logger.debug('debug message')       # debug 调试模式 级别最低
    logger.info('info message')         # info  显示正常信息
    logger.warning('warning message')   # warning 显示警告信息
    logger.error('error message')       # error 显示错误信息
    logger.critical('critical message')



    sh.setLevel(logging.WARNING) # 这个是让你的显示错误信息从warning开始

    setLevel是可以设置你的错误的信息的 你也可以直接用实例的对象直接调用setLevel那样打印的就是全部的错误信息

    上面是默认显示的的 一般的显示错误信息都是从error开始的 你也可以用setLevel来让它的输出显示改变

    比如想从warring开始显示错误信息就:更改logger的setLevel

    # 吸星大法就是让你的信息互相关联
    # 吸星大法就是让你的信息互相关联
    logger.addHandler(fh)  # 和 logger的句柄关联
    logger.addHandler(sh)  #把你的上面的屏幕和logger对象关联
    logging
    logging 是记录日志的模块
    它不能自己打印内容 只能根据程序员写的代码来完成功能
    logging模块提供5中日志级别,从低到高一次:debug info warning error critical
    默认从warning模式开始显示
    只显示一些基础信息,我们还可以对显示的格式做一些配置

    简单配置 配置格式 basicCondfig
    问题:编码问题,不能同时输出到文件和屏幕

    logger对象配置
    高可定制化
    首先创造logger对象
    创造文件句柄 屏幕句柄
    创造格式
    使用文件句柄和屏幕句柄 绑定格式
    logger对象和句柄关联
    logger.setLevel
    使用的时候 logger.debug

    collections 模块:

    在基础数据类型之外又增加了一些数据类型

    from collections import namedtuple
    Point = namedtuple('Point',['x','y'])
    p = Point(1,2)
    p = Point(1,2)
    print(p)
    print(p.x)
    print(p.y)
    
    from collections import deque
    双端队列
    dq = deque()
    dq.append(1)
    dq.append(2)
    dq.append(3)
    print(dq)
    print(dq.pop())
    print(dq.popleft())
    dq.appendleft(4)
    dq.appendleft(5)
    print(dq)
    
    import queue
    # 队列   先进先出 fifo
    # 计算机数据结构模型
    # 先进先出
    
    # 栈    先进后出
    # 计算机数据结构模型
    # 先进先出
    
    # dic = {'k1':'v1','k2':'v1','k3':'v1','k4':'v1'}
    # keys = list(dic.keys())
    # print(keys)
    # for k in keys:
    #     print(k,dic[k])
    
    from collections import OrderedDict
    # dic = dict([('k1','v1'),('k2','v2')])
    # print(dic)
    
    dic = OrderedDict([('k1','v1'),('k2','v2')])
    print(dic)
    View Code
  • 相关阅读:
    Swift相比OC语言有哪些优点
    Swift实战技巧
    Swift 并行编程现状和展望
    Swift设置只读(readOnly)属性
    Swift零基础教程2019最新版(一)搭建开发环境
    中文版 Apple 官方 Swift 教程《The Swift Programming Language》
    一个中文的苹果开发站
    simulink创建简单模型
    Simulink 产品说明
    matlab中的实时音频
  • 原文地址:https://www.cnblogs.com/zhaoyunlong/p/8921938.html
Copyright © 2011-2022 走看看