开发者社区> 技术小胖子> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

第五篇 Python常用的模块(day5-day6)

简介:
+关注继续查看
一、logging模块
1、日志级别
        CRITICAL = 50 #FATAL = CRITICAL
        ERROR = 40
        WARNING = 30 #WARN = WARNING
        INFO = 20
        DEBUG = 10
        NOTSET = 0 #不设置
2、默认级别为warning,默认打印到终端
        import logging
        logging.debug('调试debug')
        logging.info('消息info')
        logging.warning('警告warn')
        logging.error('错误error')
        logging.critical('严重critical')
        输出:
        WARNING:root:警告warn
        ERROR:root:错误error
        CRITICAL:root:严重critical
3、为logging模块指定全局配置,针对所有logger有效,控制打印到文件中
可在logging.basicConfig()函数中通过具体参数来更改logging模块默认行为,可用参数有:
        filename:用指定的文件名创建FiledHandler(后边会具体讲解handler的概念),这样日志会被存储在指定的文件中。
        filemode:文件打开方式,在指定了filename时使用这个参数,默认值为“a”还可指定为“w”。
        format:指定handler使用的日志显示格式。 
        datefmt:指定日期时间格式。 
        level:设置rootlogger(后边会讲解具体概念)的日志级别 
        stream:用指定的stream创建StreamHandler。可以指定输出到sys.stderr,sys.stdout或者文件,默认为sys.stderr。若同时列出了filename和stream两个参数,则stream参数会被忽略。
    #格式
        %(name)s:Logger的名字,并非用户名,详细查看
        %(levelno)s:数字形式的日志级别
        %(levelname)s:文本形式的日志级别
        %(pathname)s:调用日志输出函数的模块的完整路径名,可能没有
        %(filename)s:调用日志输出函数的模块的文件名
        %(module)s:调用日志输出函数的模块名
        %(funcName)s:调用日志输出函数的函数名
        %(lineno)d:调用日志输出函数的语句所在的代码行
        %(created)f:当前时间,用UNIX标准的表示时间的浮 点数表示
        %(relativeCreated)d:输出日志信息时的,自Logger创建以 来的毫秒数
        %(asctime)s:字符串形式的当前时间。默认格式是 “2003-07-08 16:49:45,896”。逗号后面的是毫秒
        %(thread)d:线程ID。可能没有
        %(threadName)s:线程名。可能没有
        %(process)d:进程ID。可能没有
        %(message)s:用户输出的消息
4、logging模块的Formatter,Handler,Logger,Filter对象
原理图:  稍后补上
        logger:产生日志的对象
        Filter:过滤日志的对象
        Handler:接收日志然后控制打印到不同的地方,FileHandler用来打印到文件中,StreamHandler用来打印到终端
        Formatter对象:可以定制不同的日志格式对象,然后绑定给不同的Handler对象使用,以此来控制不同的Handler的日志格式
5、Logger与Handler的级别
logger是第一级过滤,然后才能到handler,我们可以给logger和handler同时设置level,但是需要注意的是:
        Logger is also the first to filter the message based on a level — if you set the logger to INFO, and all handlers to DEBUG, you still won't receive DEBUG messages on handlers — they'll be rejected by the logger itself. If you set logger to DEBUG, but all handlers to INFO, you won't receive any DEBUG messages either — because while the logger says "ok, process this", the handlers reject it (DEBUG < INFO).
二、re模块
1、什么是正则?
正则就是用一些具有特殊含义的符号组合到一起(称为正则表达式)来描述字符或者字符串的方法。或者说:正则就是用来描述一类事物的规则。(在Python中)它内嵌在Python中,并通过 re 模块实现。正则表达式模式被编译成一系列的字节码,然后由用 C 编写的匹配引擎执行。
2、常用匹配模式(元字符)
http://blog.csdn.net/yufenghyc/article/details/51078107

第五篇 Python常用的模块(day5-day6)

    .*默认为贪婪匹配
    print(re.findall('a.*b','a1b22222222b')) #['a1b22222222b']
    .*?为非贪婪匹配:推荐使用
    print(re.findall('a.*?b','a1b22222222b')) #['a1b']
3、re模块提供的方法介绍
    import re
    re.findall
    re.search 
    re.match
    re.split
    re.sub
    re.subn
    re.compile
三、time与datetime模块
1、在Python中,通常有这几种方式来表示时间:
    时间戳(timestamp):通常来说,时间戳表示的是从19701100:00:00开始按秒计算的偏移量。我们运行“type(time.time())”,返回的是float类型。
    格式化的时间字符串(Format String)
    结构化的时间(struct_time):struct_time元组共有9个元素共九个元素:(年,月,日,时,分,秒,一年中第几周,一年中第几天,夏令时)
         import time
         #我们先以当前时间为准,让大家快速认识三种形式的时间
         print(time.time()) # 时间戳:1487130156.419527
         print(time.strftime("%Y-%m-%d %X")) #格式化的时间字符串:'2017-02-15 11:40:53' 
         print(time.localtime()) #本地时区的struct_time
         print(time.gmtime())    #UTC时区的struct_time
2、计算机认识的时间只能是'时间戳'格式,而程序员可处理的或者说人类能看懂的时间有: '格式化的时间字符串''结构化的时间',于是有了下图的转换关系

第五篇 Python常用的模块(day5-day6)

localtime1473525444.037215gmtimelocaltimegmtime0print#1473525749.0 formatprint"%Y-%m-%d %X"#2016-09-11 00:49:56formatprint'2011-05-05 16:37:06''%Y-%m-%d %X'2011551637631251format"%a %b %d %H:%M:%S %Y"print#(0,1)----float    大于0且小于1之间的小数print13#[1,3]    大于等于1且小于等于3之间的整数print13#[1,3)    大于等于1且小于3之间的整数print1'23'45#1或者23或者[4,5]print1'23'452#列表元素任意2个组合print13#大于1小于3的小数,如1.927109612082716''for09#随机取到的是一个数字,为了后面方便拼接 转华为字符串chr6590#取到的数字刚好对应的是ASCII表中的大写字母returnprint6"dirname"'.''..''dirname1/dirname2''dirname1''dirname'mkdir'dirname'rmdir'dirname'"oldname""newname"'path/filename'"\\""/""\t\n""\n"'nt''posix'"bash command"splitsplitsplit_#上一级0_exit0print'[%-15s]'#')  #-是左对齐 15是宽度print'[%-15s]'##')print'[%-15s]'###')print'[%-15s]'####')print'%s%%'100#第二个%号代表取消第一个%的特殊意义 100%print'[%-%ds]'#')#这个是错误的,这里这么想,先把50传值给%d,但是第一个%也会被认为要接受值,所以这里要保留他的本意,给下一次传值使用print'[%%-%ds]'#[%-50s]print'[%%-%ds]'#')print'[%%-%ds]'##')print'[%%-%ds]'###')time50if11'[%%-%ds]''#'intprint'\r%s %d%%'int100''010241while011024,如需转载请自行联系原作者

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
Python中的常用模块(下)
Python中的常用模块
20 0
Python中的常用模块(上)
Python中的常用模块
20 0
14、python常用模块
常用模块 认识模块 什么是模块 什么是模块?    常见的场景:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀。    但其实import加载的模块分为四个通用类别:   1 使用python编写的代码(.
1030 0
python之常用模块
模块,用一堆代码实现了某个功能的代码的集合。  类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合。而对于一个复杂的功能来,可能需要多个函数才能完成(函数又可以在不同的.py文件中),n个 .py 文件组成的代码集合就称为模块。
1247 0
Python 面向对象 9: 模块和包
Python 面向对象 9: 模块和包
43 0
21114
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载