![]()
1、time
# 时间戳 计算机用
time.time() 时间戳,从1970 1 1 0:00 距今的时间
# 格式时间
ft = time.strftime("%Y{}%m{}%d{} %I:%M:%S ").format('年', '月', '日')
# 结构化时间以元组的形式存在
struct_time = time.localtime()
# 时间戳 ---> 格式化时间
timestamp = time.time()
st = time.localtime(timestamp) # 先将时间戳转化成结构化时间
ft = time.strftime('%Y/%m/%d %H:%M:%S',st)
print(ft)
# 格式化时间 ----> 时间戳
ft = time.strftime('%Y/%m/%d %H:%M:%S')
st = time.strptime(ft,'%Y/%m/%d %H:%M:%S') # 现将格式化时间转化成结构化时间
timestamp = time.mktime(st)
print(timestamp)
# 结构化时间 ----> 格式化时间
struct_time = time.localtime()
st = time.asctime(struct_time)
print(st) # Tue Jan 8 11:10:43 2019 格式固定
# 时间戳--->格式化时间
print(time.ctime(15000000000))
2、datetime
import datetime
now_time = datetime.datetime.now()
print(now_time)
print(now_time + datetime.timedelta(weeks=3))
print(now_time + datetime.timedelta(weeks=-3))
# 可以算days、hours、minutes、seconds后
# 也可以直接调整
print(now_time.replace(year=1989,month=4,day=25))
3、logging(高级模式)
import os
import logging.config
# 定义三种日志输出格式 开始
# 标准版 格式
standard_format = '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]' \
'[%(levelname)s][%(message)s]' #其中name为getlogger指定的名字
# 简单版 格式
simple_format = '[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s'
# boss版格式(lowb版)
id_simple_format = '[%(levelname)s][%(asctime)s] %(message)s'
# 定义日志输出格式 结束
logfile_name = r'D:\python骑士计划3期\day14\log\staff.log' # log文件名
# log配置字典
LOGGING_DIC = {
'version': 1, # 版本
'disable_existing_loggers': False, # 可否重复使用之前的logger对象
'formatters': {
'standard': {
'format': standard_format
},
'simple': {
'format': simple_format
},
'boss_formatter':{
'format': id_simple_format
},
},
'filters': {},
'handlers': {
#打印到终端的日志
'stream': {
'level': 'DEBUG',
'class': 'logging.StreamHandler', # 打印到屏幕
'formatter': 'simple'
},
#打印到文件的日志,收集info及以上的日志 文件句柄
'file': {
'level': 20,
'class': 'logging.handlers.RotatingFileHandler', # 保存到文件
'formatter': 'standard', #标准
'filename': logfile_name, # 日志文件
'maxBytes': 300, # 日志大小 300 bit
'backupCount': 5, #轮转文件数
'encoding': 'utf-8', # 日志文件的编码,再也不用担心中文log乱码了
},
},
'loggers': {
#logging.getLogger(__name__)拿到的logger配置
'': {
'handlers': ['stream', 'file'], # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕
'level': 'DEBUG', # 总级别
'propagate': True, # 向上(更高level的logger)传递
},
},
}
# 字典中第一层的所有key都是固定不可变的。
import logging
logging.config.dictConfig(LOGGING_DIC)
logger = logging.getLogger() # 这个logger对象是通过自己个性化配置的logger对象
logger.info('运转正常')