python中表示时间的几种方式:
1.时间戳:
时间戳表示是从1970年1月1号 00:00:00开始到现在按秒计算的偏移量
2.UTC(世界协调时):
就是格林威治天文时间,也是世界标准时间。在中国为UTC+8
3.元组方式:
struct_time元组共有9个元素,返回struct_time的函数主要有gmtime(),localtime(),strptime()。
struct_time
tm_year :年
tm_mon :月(1-12)
tm_mday :日(1-31)
tm_hour :时(0-23)
tm_min :分(0-59)
tm_sec :秒(0-59)
tm_wday :星期几(0-6,0表示周日)
tm_yday :一年中的第几天(1-366)
tm_isdst :是否是夏令时(默认为-1)
时间字符串支持的格式符号:(区分大小写)
%a 本地星期名称的简写(如星期四为Thu)
%A 本地星期名称的全称(如星期四为Thursday)
%b 本地月份名称的简写(如八月份为agu)
%B 本地月份名称的全称(如八月份为august)
%c 本地相应的日期和时间的字符串表示(如:15/08/27 10:20:06)
%d 一个月中的第几天(01 - 31)
%f 微妙(范围0.999999)
%H 一天中的第几个小时(24小时制,00 - 23)
%I 第几个小时(12小时制,0 - 11)
%j 一年中的第几天(001 - 366)
%m 月份(01 - 12)
%M 分钟数(00 - 59)
%p 本地am或者pm的相应符
%S 秒(00 - 59)
%U 一年中的星期数。(00 - 53星期天是一个星期的开始。)第一个星期天之 前的所有天数都放在第0周。
%w 一个星期中的第几天(0 - 6,0是星期天)
%W 和%U基本相同,不同的是%W以星期一为一个星期的开始。
%x 本地相应日期字符串(如15/08/01)
%X 本地相应时间字符串(如08:08:10)
%y 去掉世纪的年份(00 - 99)两个数字表示的年份
%Y 完整的年份(4个数字表示年份)
%z 与UTC时间的间隔(如果是本地时间,返回空字符串)
%Z 时区的名字(如果是本地时间,返回空字符串)
%% ‘%’字符
logging模块
# 日志等级(level)
DEBUG 调试信息,通常在诊断问题的时候用得着
INFO 普通信息,确认程序按照预期运行
WARNING 警告信息,表示发生意想不到的事情,或者指示接下来可能会出现一些问题,但是程序还是继续运行
ERROR 错误信息,程序运行中出现了一些问题,程序某些功能不能执行
CRITICAL 危险信息,一个严重的错误,导致程序无法继续运行
# formatter格式
%(asctime)s 日志事件发生的时间
%(levelname)s 该日志记录的日志级别
%(message)s 日志记录的文本内容
%(name)s 所使用的日志器名称,默认是'root'
%(pathname)s 调用日志记录函数的文件的全路径
%(filename)s 调用日志记录函数的文件
%(funcName)s 调用日志记录函数的函数名
%(lineno)d 调用日志记录函数的代码所在的行号
# os/ sys/ time/ logging 模块
# import os
# 1.os模块: 包含普遍的操作系统功能
# 1>os.getenv() 读取环境变量
# print(os.getenv('path'))
# print(os.environ)
# 2>os.path.split() 把路径分为两部分,1个是目录路径, 1个文件名
# print(os.path.split('D:/pytest2/08基础班/25内置模块/1.内置模块01.py'))
# print(os.path.split('D:\\pytest2\\08基础班\\25内置模块\\1.内置模块01.py'))
# print(os.path.split(r'D:\pytest2\08基础班\25内置模块\1.内置模块01.py'))
#
# print(os.path.dirname(r'D:\pytest2\08基础班\25内置模块\1.内置模块01.py')) # 分割的第一个元素
# print(os.path.basename(r'D:\pytest2\08基础班\25内置模块\1.内置模块01.py')) # 分割的第二个元素
# 3>os.path.exisits() 判断路径是否存在 ,存在返回True, 不存在返回False
# print(os.path.exists(r'D:\pytest2\08基础班\25内置模块\1.内置模块02.py'))
# 4>os.path.isabs(): 判断是否是绝对路径
# print(os.path.isabs(r'D:\pytest2\08基础班\25内置模块\1.内置模块01.py'))
# 判断一个文件是否存在
# print(os.path.isfile(r'D:\pytest2\08基础班\25内置模块\1.内置模块01.py'))
# 判断一个文件夹是否存在
# print(os.path.isdir(r'D:\pytest2\08基础班\25内置模块'))
# 5> os.path.abspath()
# print(os.path.abspath('.')) # 返回当前文件的绝对路径
# print(os.path.abspath('../../')) # 返回上一层的绝对路径
# 2.sys模块:负责程序与python解释器的交互
# import sys
# print(sys.getdefaultencoding()) # 获取系统当前编码
# print(sys.path) # 返回环境变量的路径
# print(sys.platform) # 返回当前系统平台, 比如:win32 Linux等
# print(sys.version) # 查看目前系统的python版本
# 3.time模块:专门用来处理时间
import time
# 时间戳
# print(time.time())
# time.sleep(2) # 睡眠
# 1>time.localtime() 将时间戳转换为当前时区的struct_time
# t1 = time.localtime()
# print(type(t1))
# print(t1[0])
# print(t1.tm_mon)
# 2>time.asctime()
# print(time.asctime()) # Wed Oct 14 21:11:34 2020
# 3>time.strftime(format, t) : 返回字符串表示当地时间
# format:格式化字符串 t:struct_time对象(可选)
# print(time.strftime('%Y-%m-%d', time.localtime()))
# print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()))
# 4>time.strptime(str, format): 将字符串转换成struct_time对象
# str:时间字符串 # format:格式化字符串
# stime = '2020.10.14 19:00:23'
# print(time.strptime(stime, '%Y.%m.%d %H:%M:%S'))
# 4.logging模块
# 日志等级:
# DEBUG 调试信息,通常在诊断问题的时候用得着
# INFO 普通信息,确认程序按照预期运行
# WARNING 警告信息,表示发生意想不到的事情,或者指示接下来可能会出现一些问题,但是程序还是继续运行
# ERROR 错误信息,程序运行中出现了一些问题,程序某些功能不能执行
# CRITICAL 危险信息,一个严重的错误,导致程序无法继续运行
# 默认的日志级别是WARNING
import logging
# 举例一:
# 对logging来进行配置, 日志文件后缀是log level:设置日志文件等级
# logging.basicConfig(filename='exam.log', level=logging.DEBUG)
# # 调试信息
# logging.debug('this is debug')
# # 普通信息
# logging.info('this is info')
# # 警告信息
# logging.warning('this is warning')
# 举例二:
# basicConfig写一个就可以了,多的不会执行
# logging.basicConfig(format='日志级别:%(levelname)s 日志内容:%(message)s', level=logging.DEBUG)
# logging.basicConfig(format='日志时间:%(asctime)s\n'
# '日志内容:%(message)s',
# level=logging.INFO
#
# )
# logging.debug('this is debug')
# logging.info('this is info')
# logging.warning('this is warning')
# 举例三:日志管理器
# 步骤:1.初始化对象 2.设置级别 3.定义handler(控制显示方式) 4.格式化输出
# 日志模块组件:
# 1.日志器:logger 提供了应用程序可以一直使用的接口
# 2.处理器:handler 将创建的日志记录发送到合适的目的输出
# 3.格式器:formatter 决定日志的输出格式
# # # 创建一个logger对象 初始化
# logger = logging.getLogger('test') # 实例化对象,可以不写名称
# logger.setLevel(logging.DEBUG)
# #
# # # 定义handler
# # # 1.控制台显示
# sh = logging.StreamHandler()
# # # 达到什么级别在控制台输出
# sh.setLevel(logging.INFO)
# #
# # # 2.在文件里面显示
# fh = logging.FileHandler('ftest.log', encoding='utf-8')
# fh.setLevel(logging.ERROR)
# #
# # 格式化输出,定义日志格式
# formatter = logging.Formatter(
# '日志级别:%(levelname)s'
# '日志消息:%(message)s'
# )
#
# # 告诉他以什么样的格式输出
# sh.setFormatter(formatter)
# fh.setFormatter(formatter)
#
# # 将logger 添加到handler 里面
# logger.addHandler(sh)
# logger.addHandler(fh)
#
#
# # 日志
# # logger.debug('测试中')
# # logger.info('正常运行')
# # logger.warning('警告')
# # logger.error('错误')
# # logger.critical('危险')
#
# # 结合异常
# try:
# a
#
# except Exception as e:
# logger.error(e)
#