zoukankan      html  css  js  c++  java
  • 学习笔记-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
       
  • 相关阅读:
    Math类的用法
    c#中和java中可变参数对比
    c#中泛型集合directory和java中map集合对比
    C#调用短信接口(通过简单的工厂模式整合多个短信平台)
    C#用网易邮箱发送邮件(同步异步)
    新浪云-PHP实现上传原图,缩略图
    PHP 继承,组合,单模式,GUID,等混合实例
    ASP.Net MVC @Html类
    ASP.net MVC 无法初始化 ASP.NET Simple Membership 数据库
    PHP 单列模式实例讲解以及参考网址
  • 原文地址:https://www.cnblogs.com/Cloudloong/p/9719778.html
Copyright © 2011-2022 走看看