Python常用模块datetime,logging

datetime

- 处理时间和日期的标准库
- 时间戳:从1970年1月1日0时0分0秒,到当前时间的秒数,是浮点数,精确到毫秒
- 模块:
	- date	
	- time
	- datetime
	- timedelta	

date

- 日期对象,常用属性:year,month,day
from datetime import date
#date 时间对象
d = date(2018,3,16)	#年月日必须是整数
print(d)	#2018-3-16
print(type(d))		#<class 'datetime.date'>

time

- 时间对象,常用属性:hour,minute,second,microsecond
from datetime import time
#时间对象
t = time(hour=23,minute=45,second=23,microsecond=100)		
#时分秒,可以省略
print(t,type(t))		#23:45:23.00100 <class'datetime.time>

datetime

- 日期时间对象
from datetime import datetime
#日期时间对象
dt = datetime(2018,11,14)	#年月日必须给,整数
print(dt,type(dt))	#2018-11-14 00:00:00 <class'datetime.datetime'>

timedelta

-时间间隔,计算两个时间之间的长度
from datetime import timedelta
td = datetime(days=1.2)	#可以用浮点数
print(td,type(td))	#1 day,4:48:00 <class'datetime.timedelta'>

datetime日期时间对象常用方法

时间转换,不同格式转换
from datetime import datetime
#获取当前时间
now = datetime.now()
print(now) #2018-11-23 15:28:12.345534
#now类型是datetime对象,不是字符串
#datetime转成字符串输出
time_str = now.strftime(’%Y-%m-%d %H:%M:%S’)
print(time_str,type(time_str))
#2018-11-23 15:34:45 <class’str’>
#时间str转成datetime
dt = datetime.strptime(“2018/11/23”,"%Y/%m/%d")
print(dt,type(dt))
#2018-11-23 00:00:00 <class’datetime.datetime’>
#datetime对象转时间戳
print(now.timestamp()) #1542382332.37289
#浮点数,表示从1970-1-1 00:00:00到现在经过多少秒
#时间戳到datetime
dt1 = datetime.fromtimestamp(1542382332.37289)
print(dt1,type(dt1))
#2018-11-23 15:42:32.372890 <class’datetime.datetime’>
date,time,datetime都是不可变对象
print({now:“xianzai”}) #不可变对象才能做键
时间格式化:主要针对字符串
去看time模块中,time.strftime函数里的注释
import time
time.strftime #Ctrl+鼠标左键点time.strftime
%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. #周几的简写如Sun
%A Locale’s full weekday name. #周几的全写如Sunday
%b Locale’s abbreviated month name. #月份的简写如Mon
%B Locale’s full month name. #月份的全写如Monday
%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.
时间运算
from datetime import datetime,timedelta
today = datetime.now().date()
tomorrow = today + timedelta(days=1) #一天以后
yesterday = today - timedelta(days=1,hours=1.3)
#一天以前,1.3小时以前
print(tomorrow,type(tomorrow))
print(yesterday,type(yesterday))

logging

log日志logging内置的日志模块
	程序运行状况
	信息,错误,警告,错误排查,系统运维

简单使用 只是print,没有保存
import logging
logging.debug(“this is a debug log”)
logging.info(“this is a ingo log”)
logging.warning(“this is a warning log”)
logging.error(“this is a error log”)
logging.critical(“this is a critical log”)
日志级别
debug 调试,诊断
info 普通信息
warning 警告信息
error 错误信息
critical 危险信息,严重错误,程序无法继续运行
logging.basicConfig(level=logging.DEBUG)
import logging
logging.basicConfig(
level=10, #设置级别,根据级别显示
format="%(asctime)s-%(levelname)s-%(message)s", #设置输出格式
filename = “test.log”, #设置 日志文件路径,输出到文件不打印了
)
logging.debug(“this is a debug log”)
logging.info(“this is a ingo log”)
logging.warning(“this is a warning log”)
logging.error(“this is a error log”)
logging.critical(“this is a critical log”)

格式化
输出格式
找课件
输出到文件
设置一下filename,看源码
高级用法:输出到不同地方

使用步骤:
创建一个logger对象,设置全局等级
创建handler,决定把日志发的到那里(可以有多个),并设置其等级
创建输出格式,添加到handler
handler添加到logger
#logging的高级用法
import logging
#1 创建一个logger
logger = logging.getLogger("%s_log"%name)
#2 设置日志等级
logger.setLevel(logging.INFO) #全局 不设置 默认是warning
#3 创建一个handler对象,用于写入到日志文件
fh = logging.FileHandler(“test.log”,encoding=“utf-8”)
#设置等级
fh.setLevel(logging.INFO)
#创建一个handler对象,用于输出到控制台
ch = logging.StreamHandler()
ch.setLevel(logging.WARNING)
#4 设置格式
formatter = logging.Formatter("%(asctime)s-%(filename)s[line:%(lineno)d-%(levelname)s:%(message)s]")
#hamdler添加格式
fh.setFormatter(formatter)
ch.setFormatter(formatter)
#5 添加handler
logger.addHandler(ch)
logger.addHandler(fh)
#日志器,我们搞好了
logger.info(“我是一个普通信息”)
#此信息在日志信息里,运行不显示
#2018-11-27 10:07:13,565-test.py[line:51-INFO:我是一个普通信息]
logger.warning(“This is a warning log”)
#2018-11-27 10:07:13,566-test.py[line:52-WARNING:This is a warning log]

猜你喜欢

转载自blog.csdn.net/xiaogeldx/article/details/84400672