6.1 datetime模块

datetime是python处理时间和日期的标准库

类名           功能说明

date    日期对象,常用的属性有year, month, day

time    时间对象hour,minute,second,毫秒

datetime    日期时间对象,常用的属性有hour, minute,              second, microsecond

timedelta   时间间隔,即两个时间点之间的长度

主要使用:

datetime.datetiem( ) 、  datetime.timedelta( )

1.datetime类中常用方法:

  • 1.获取当前日期时间:
    datetime.now();
  • 2.日期时间转化为时间戳:
    时间日期对象.timestamp();
    例如:datetime.now().timestamp()
  • 3.时间戳转化为日期时间:
    datetime.fromtimestamp(时间戳)
    例如: datetime.fromtimestamp(1534231316.796308)
  • 4.日期时间对象转字符串:
    时间日期对象.strftime(format)
    例如: datetime.now().strftime("%Y-%m-%d")
  • 5.字符串转日期时间对象:
    datetime.strptime(data_str, format)
    例如: datetime.strptime('2018-3-22 15:28:18', '%Y-%m-%d %H:%M:%S')

 

  • 6.格式字符串常用格式
    格式 描述
    %Y,%y 年%m 月%d 日%H/%l 时%M 分%S 秒

 

2.timedelte:时间运算

datetime.timedelta( days=0,seconds=0, microseconds=0 milliseconds=0, minutes=0, hours=0, weeks=0 )


    
    import datetime
    
    now = datetime.datetime. now (). date()
    
    result = now + datetime. timedelta(days=1)
    print (result. strftime ("%d"))  #获得明天的日期
    
    result = now 一 datetime.timedelta (days=3)
    print (result. strftime("%d"))  #获得三天前的日期
    
    
    
    from datetime import datetime
    
    def get_days(birthday):
        birth=datetime.strptime(birthday,'%Y-%m-%S')
        now=datetime.now()
        days=now-birth
        print(days.days)
    
    if __name__== '__main__':
        birthday=input('shngri(1980-01-01):')
        get_days(birthday)
    

6.2 logging模块

logging.level(message) 创建一条level级别的日志logging.basicConfig() 对logger进行配置


      import logging
    
      LOG_FORMAT = ”%(asctime)s - %(1evelname)s-% (message)s”  #设置输出的格式
    
      logging. basicConfig( level=logging. WARNING, format=LOG_FORMAT)
    
        #写到文件中
      logging. basicConfig( filename='my.log',filemode = 'a',level=logging. WARNING, format=LOG_FORMAT)
    
      logging. debug( This is a debug log )
    
      logging. info( This is a info log”
        
      logging. warning( This is a warning log")
    
      logging. error( This is a errorlog")
    
      logging. critical ( This is a critical 1og )

Logging 中几种级别:DEBUG < INFO < WARNING < ERROR < CRITICAL 默认显示后三个

日志等级(level) :

日志等级(level)  :      描述

DEBUG     调试信息,通常在诊断问题的时候用得着 
INFO      普通信息,确认程序按照预期运行 

WARNING   警告信息,表示发生意想不到的事情,或者指示接下来可能          会出现一些问题,但是程序还是继续运行    

ERROR     错误信息,程序运行中出现了一些问题,程序某些功能不能执行
CRITICAL    危险信息,一个严重的错误,导致程序无法继续运行
  • Formatter格式:
    %(asctime)s%(levelname)s该日志记录的日志级别%(message)s%(name)s%(pathname)s调用日志记录函数的文件的全路径%(filename)s调用日志记录函数的文件%(funcName)s调用日志记录函数的函数名%(lineno)d 调用日志记录函数的代码所在的行号

 

  • 组件说明:(了解)
    Loggers(日志记录器)提供程序直接使用的接口Handlers(日志处理器)将记录的日志发送到指定的位置Filters(日志过滤器)用于过滤特定的日志记录Formatters(日志格式器)用于控制日志信息的输出格式

 

模块化组件使用:

  • 1.创建一个logger(日志处理器)对象
  • 2.定义handler(日志处理器),决定把日志发到哪里
    StreamHandler 输出到控制台FileHandler 输出到文件
  • 3.设置日志级别(level)和输出格式Formatters(日志格式器)
  • 4.把handler添加到对应的logger中去

    import logging
    
    my_logger = logging . Logger( ' nanbei' )
    
    fh = logging. FileHandler( 'my.log')
    fh. setLevel(logging . INFO)
    
    fmt = logging . Formatter( ' %message)s - nanbei' )
    fh. setFormatter( fmt )
    
    my_logger.addHandler(fh)


•   
    sh = logging .StreamHandler( )
    sh.setLevel(logging. DEBUG)
    
    sh_fmt = logging. Formatter('%(message)s-nanbei-stream_ handler')
    
    sh. setFormatter(sh_fmt )
    my_logger. addHandler(sh) 
    
    my_logger.info('成功')