当前位置:   article > 正文

python学习笔记 模块 datetime logging_python logging时区

python 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对象
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

时间格式化

    %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.
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

时间运算

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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

二,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')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

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')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

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)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/花生_TL007/article/detail/249019
推荐阅读
相关标签
  

闽ICP备14008679号