python学习笔记 模块 datetime logging

python常用模块(二)

一,datetime

1,概述

datetime是python处理日期和时间的标准库 ,它由以下几个模块组成:

类名 功能说明
date 日期对象 , year , month , day
time 时间对象 , hour , minutes , second , microsecond
datetime 时间日期对
timedelta 时间间隔,两个时间点之间的长度

2,时间表示知识普及

  1. 时区

  2. 格林威治时间 , UTC ,国际标志时间

    就是零时区的时间

  3. 时间戳(timestamp)

    是指某个时间距离格林威治时间1970 ,1 ,1 ,00 : 00 : 00的总秒数

3,模块接口

类名 功能说明
date 日期对象,常用的属性有year, month, day
time 时间对象hour,minute,second,毫秒
datetime 日期时间对象,常用的属性有hour, minute, second, microsecond
timedelta 时间间隔,即两个时间点之间的长度

主要使用: datetime.datetime( ) 、 datetime.timedelta( )

简单使用

from datetime import datetime

d = datetime.now()        #获取当前时间

print(d, d.day, d.year····)   #输出 天 年 等等 

st = d.timestamp()         #datetime对象转换成时间戳
st = datetime.fromtimestamp      #时间戳对象转换成datetime

d.strftime('%Y-%m-%d %H-%M-%S'#datetime对象转换成字符串(格式化输出)
d = datetime.strptime(dt_str(字符串的变量名), '%Y*%m-%d'(此处必须和字符串的格式一致))     #字符串对象转换成datetime

new_d = datetime(year=2019, moth=5, day=6)   #直接创建一个datetime对象

时间格式化

    %Y  Year with century as a decimal number.
    %m  Month as a decimal number [01,12].
    %d  Day of the month as a decimal number [01,31].
    %H  Hour (24-hour clock) as a decimal number [00,23].
    %M  Minute as a decimal number [00,59].
    %S  Second as a decimal number [00,61].
    %z  Time zone offset from UTC.
    %a  Locale's abbreviated weekday name.
    %A  Locale's full weekday name.
    %b  Locale's abbreviated month name.
    %B  Locale's full month name.
    %c  Locale's appropriate date and time representation.
    %I  Hour (12-hour clock) as a decimal number [01,12].
    %p  Locale's equivalent of either AM or PM.

时间运算

datetime, date对象 之间可以进行减法运算,从而得到他们之间的时间间隔

import time
from datetime import datetime, timedelta
# 直接创建一个datetime对象

today = datetime.now()

tomorrow = today + timedelta(days=1)
yesterday = today - timedelta(days=1)
print(today)
print(tomorrow)
print(yesterday)

4,时区转换

import time
from datetime import datetime, timedelta, timezone
# 创建一个时区
tz = timezone(offset=timedelta(hours=8))


d = datetime.now(tz=tz)

new_tz = timezone(offset=timedelta(hours=5))

new_d = d.astimezone(tz=new_tz)
print(d)
print(new_d)

二,logging

1,概述

logging是python的内置的日志模块 , 很多的第三方库,例如scrapy,django框架的日志记录都是使用logging模块。

等级

日志等级(level) 描述
DEBUG 调试信息
INFO 普通信息,
WARNING 警告信息,
ERROR 错误信息,
CRITICAL 严重错误

2,简单使用

import logging      #  导入

logging.basicConfig(
    level=logging.DEBUG,        # 等级
    format="%(asctime)s-%(levelname)s-%(message)s"  # 设置输出格式
)


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 error log')
logging.critical('This is a critical log')

3,将日志写到文件

import logging      #  导入

logging.basicConfig(
    filename='example.log',
    level=logging.DEBUG,        # 等级
    format="%(asctime)s-%(levelname)s-%(message)s"  # 设置输出格式
)


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 error log')
logging.critical('This is a critical log')

4,高级用法

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

步骤:

  1. 创建一个loggers对象
  2. 设置日志级别
  3. 创建formatters对象
  4. 定义handler对象,决定把日志发送到哪里
import json
import logging      #  导入

#1. 创建一个loggers对象
logger = logging.getLogger('%s_log' % __name__)
#2. 设置日志级别
logger.setLevel(logging.INFO)
#3. 创建formatters对象
formatter = logging.Formatter('%(asctime)s - %(filename)s [line:%(lineno)d - %(levelname)s: %(message)s]')
#4. 定义handler对象,决定吧日志发送到哪里
fh = logging.FileHandler('log.log')
fh.setLevel(logging.WARNING)

# 再创建一个handler输出日志到控制台
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
#5.设置handler的日志格式
fh.setFormatter(formatter)
ch.setFormatter(formatter)
#6.将handler 添加到logger中
logger.addHandler(fh)
logger.addHandler(ch)


data = '1.1'
logger.info('转换数据 %s 为整数' % data)
try:
    int(data)
except Exception as e:
    logger.error(e)

你可能感兴趣的:(python)