学习笔记-Python基础12-常用模块-calendar、time、datatime、timeit、os、shutil、zip、math、string、logging...

常用模块:

  calendar、time、datatime、timeit、os、shutil、zip、math、string

  上述所有模块使用理论上都要应该先导入,string是特例

  calendar、time、datatime的区别就是其中文的意思,依次对应日历、时间、日期

  1、calendar,跟日历相关的模块

    

    

    

    

    

  2、time

      时间戳

        一个时间的表示,根据不同语言,可以是整数或者浮点数

        是从1970年1月1日0时0分0秒到现在经历的秒数

        如果表示的时间是1970年以前或者太遥远的未来,可能出现异常

        32位操作系统能够支持到2038年

      UTC时间

        UTC又称为世界协调时间,以英国的格林尼治天文台所在地区的时间作为参考的时间,也叫世界标准时间

        中国时间是UTC+8  东八区

      夏令时

        夏令时就是在夏天的时候将时间调快一小时,本意是督促大家早睡早起节省蜡烛!每天变成25个小时,但本质没变还是24小时

      时间元组

        一个包含时间内容的普通元组

        

 

         

         

        

        

   3、datetime模块

      datetime提供日期和时间的运算和表示

      

   4、timeit模块

      

      

   5、os模块:跟操作系统相关,主要是文件操作

    注意Python跟操作系统相关的操作,主要包含在三个模块里:

      1、os,操作系统目录相关

      2、os.path,系统路径相关

      3、shutil,高级文件操作,目录树的操作,文件复制、删除、移动

    路径:

      绝对路径:总是从根目录上开始

      相对路径:基本以当前环境开始的一个相对的地方

      以下在linux系统下运行:

      

      

      

 

      

      

      

 

      

       

    os.path模块,跟路径相关的模块

      

      

      

 

       

      

      

  6、shutil模块

      

      

       

        

  7、zip压缩包,模块名称叫zipfile

     

     

      

      

  8、random,随机数,所有的随机模块都是伪随机

      

  9、logging

  - Python记录日志的模块叫logging
  - logging模块提供模块级别的函数记录日志
  - 包含四大组件
  ## 1、日志相关概念
  - 日志,IO操作写入磁盘,速度慢,操作不要频繁,建议只记录关键信息
  - 日志级别(level)
  - 不同的用户关注不同的程序信息
  - DEBUG调试
  - INFO信息
  - NOTICE通知
  - WARNING警告
  - ERROR错误
  - CRITICAL紧急
  - ALERT
  - EMERGENCY
  - LOG的作用:
  - 调试
  - 了解软件的运行情况
  - 分析定位问题
  - 日志信息
  - time
  - 地点
  - level
  - 内容
  - 成熟的第三方日志
  - log4j
  - log4php
  - logging
  # 2、logging模块
  - 日志级别
  - 级别可自定义
  - DEBUG
  - INFO
  - WARNING
  - ERROR
  - CRITICAL
  - 初始化/写日志实例需要指定等级,只有当级别等于或高于指定级别才被记录
  - 使用方式:
  - 直接使用logging(封装了其他组件)
  - logging四大组件直接定制
  # 2.1、logging模块级别的日志
  - 使用以下几个函数
   - logging.debug(msg, *args, **kwargs) 创建一条严重级别为DEBUG的日志记录
  - logging.info(msg, *args, **kwargs) 创建一条严重级别为INFO的日志记录
  - logging.warning(msg, *args, **kwargs) 创建一条严重级别为WARNING的日志记录
   - logging.error(msg, *args, **kwargs) 创建一条严重级别为ERROR的日志记录
   - logging.critical(msg, *args, **kwargs) 创建一条严重级别为CRIRICAL的日志记录
   - logging.log(level, *args, **kwargs) 创建一条严重级别为level的日志记录
  - logging.basicConfig(**kwargs) 对root logger进行一次性配置
  - logging.basicConfig(**kwargs) 对root logger进行一次性配置
  - 只在第一次调用的时候起作用
  - 不配置logger则使用默认值
  - 输出:sys.stderr
  - 级别:WARNING
  - 格式:level:log_name:content
    
     - 参数format常用举例:
    asctime %(asctime)s 日志事件发生的时间--人类可读时间,如2018-10-11 11:22:24,168
    levelname %(levelname)s 该日志几率的文字形式的日志级别(如DEBUG、INFO等)
    message %(message)s 日志记录的文本内容,通过msg % args计算得到
  

    

  # 2.2 logging模块的处理流程
  - 四大组件
  - 日志器(Logger):产生日志的一个接口
  - 处理器(Handler):把产生的日志发送到相应的目的地
  - 过滤器(Filter):更精细的控制那些日志输出
  - 格式器(Formatter):对输出的信息进行格式化
  - Logger
  - 产生一个日志
  - 操作:
  - Logger.setLevel()
  - Logger.addHandler()和Logger.removeHandler()
  - Logger.addFilter()和Logger.removerFilter()
  - Logger.debug:产生一条debug级别的日志,同理info等
  - Logger.exception():创建类似于Logger.errot的日志消息
  - Logger.log():获取一个明确的日志level参数创建一个日志记录
  - 如何得到一个logger对象
   - 实例化
   - logging.getLogger()
  - Handler
  - 把log发送到指定位置
  - 方法:
   - setLevel
   - setFormat
  - addFilter,removeFilter
  - 不需要直接使用,Handler是基类
  logging.StreamHandler 将日志消息发送到输出到Stream,如std.out,std.err
  logging.FileHandler 将日志消息发送到磁盘文件,默认情况下文件大小会无限增长
  logging.handlers.RotatingFileHandler 将日志消息发送到磁盘文件,并支持日志文件按大小切割
  logging.handlers.TimeRotatingFileHandler 将日志消息发送到磁盘文件,并支持日志文件按时间切割
  logging.handlers.HTTPHandler 将日志消息以GET或POST的方式发送给一个HTTP服务器
  logging.handlers.SMTPHandler 将日志消息发送给一个指定的email地址
  logging,NullHandler 该Handler实例,会忽略error message,黑洞,不要了

  - Format类
  - 直接实例化
   - 可以继承Format添加特殊内容
  - 三个参数
  - fmt:指定消息格式化字符串
  - datefmt:指定日期格式字符串
  - style:可取值%、{、$,默认为%
  - Filter类
  - 可以被Handler和Logger使用,例如Logger的Logger.addFilter()和Logger.removerFilter()
  - 控制传递过来的信息的具体内容

  以下举例:

  需求:
  1、将所有级别的日志都写入磁盘文件
  2、all.log文件中记录所有的日志信息,它的日志格式为日期和时间 - 日志级别 - 日志信息
  3、error.log文件中单独记录error级别以上的日志信息,它的日志格式为:日期和时间 - 日志级别 - 文件名[:行号] - 日志信息
  4、要求all.log在每天凌晨进行日志切割
  分析:
  1、要记录所有级别的日志,因此日志器的有效level需要设置为最低级别DEBUG
  2、日志需要被发送到两个不同的目的地all.log、error.log,因此需要设置两个Handler;另外,两个目的地都是磁盘文件,因此这个两个handler都是fileHandler
  3、all.log要求按时间进行日志切割,因此需要使用logging.handlers.TimeRotatingFileHandler
  4、两个日志文件格式不同,因此需要对两个handler分别设置格式器formatter
   

 

转载于:https://www.cnblogs.com/Cloudloong/p/9719778.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值