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 可以通过找到的节来查看多有的项
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)