代码改变世界

第26天

2018-04-23 17:54  dalao说得对  阅读(142)  评论(0编辑  收藏  举报

今天总共讲了configparser、logging、collections三个模块

1、configparser:配置模块

形如字典,格式为

# 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)

这要写进去了,就是这么个效果;

也就是说,等号左边的中括号中的内容作为标题,键值对作为赋值(这叫什么,我也不知道,反正就这意思),有瑕疵,就是里面的除了default都是小写,如果要是有这个大小写的需求就不要用这

 

2、logging模块:形成日志

注意这里,日志的内容是程序猿们自己写的,而不是他自己就会全自动帮你写

logging分为两大类:

(1)简单配置模式:

import logging
# 默认情况下 只显示 警告 及警告级别以上信息
# logging.basicConfig(level=logging.DEBUG,
#                     format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s',
#                     datefmt='%a, %d %b %y %H:%M:%S',
#                     filename = 'userinfo.log'
#                     )
# logging.debug('debug message')       # debug 调试模式 级别最低
# logging.info('info message')         # info  显示正常信息
# logging.warning('warning message')   # warning 显示警告信息
# logging.error('error message')       # error 显示错误信息
# logging.critical('critical message') # critical 显示严重错误信息

简单是很简单,但是这就造成了它的不灵活,而且它的编码形式不能改,也不能在写在文件的同时输出在屏幕上。

(2)logger :配置logger对象

自由度很高,就是看不懂

import logging
logger = logging.getLogger()  # 实例化了一个logger对象

fh = logging.FileHandler('test.log',encoding='utf-8')    # 实例化了一个文件句柄
sh = logging.StreamHandler()

fmt = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
fh.setFormatter(fmt)   # 格式和文件句柄或者屏幕句柄关联
sh.setFormatter(fmt)
sh.setLevel(logging.WARNING)

# 吸星大法
logger.addHandler(fh)  # 和logger关联的只有句柄
logger.addHandler(sh)
logger.setLevel(logging.DEBUG)

logger.debug('debug message')       # debug 调试模式 级别最低
logger.info('info message')         # info  显示正常信息
logger.warning('warning message')   # warning 显示警告信息
logger.error('error message')       # error 显示错误信息
logger.critical('critical message')

 logging模块提供5中日志级别,从低到高一次:debug info warning error critical
 默认从warning模式开始显示
 只显示一些基础信息,我们还可以对显示的格式做一些配置

3、collections模块

from collections import deque

这个是双端队列

这里牵扯到了一个队列(queue)的概念

所谓队列,则是一个有序的列表,先进先出叫做队列,先进后出叫做栈

个人认为理解为一个列表最为恰当。

其方法有append(右加)appendleft(左加)

还有个namedtuple的例子,就是一个有名字的元组,下例就是最好的解释

# 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)

这个是x,y坐标的例子,通过这个方法,可以看起来比单纯的元组要生动一些