08 datetime与logging模块(进阶)
datetime与logging模块
阶段一:日期与时间
1、datetime 模块中 主要类:
类名 | 功能说明 |
---|---|
date | 日期对象,常用的属性有year, month, day |
time | 时间对象hour,minute,second,毫秒 |
datetime | 日期时间对象,常用的属性有hour, minute, second, microsecond |
timedelta | 时间间隔,即两个时间点之间的长度 |
日期: datetime.date( year, month, day )
时间: datetime.time( hour, minute, second,microsecond )
日期时间: datetime.datetime( year, month,day,hour, minute, second, microsecond )
时间间隔 : datetime.timedelta( days=0, seconds=0,microseconds=0, milliseconds=0,minutes=0, hours=0, weeks=0 )
2、datetime.datetime( ) 类中的常用方法:
1、now ():返回当前日期时间的datetime对象:
2、utcnow(…):返回当前日期时间的UTCdatetime对象
3.strptime(…):解析成datetime对象。根据string,format 2个参数,返回一个对应的datetime对象
例子: datetime.datetime.strptime(‘2018-3-22 15:28:18','%Y-%m-%d %H:%M:%S')
4.Strftime():格式化时间
例子:strtime=now.strftime("%Y-%m-%d %H:%M:%S")
5.时间戳转日期时间:t1= datetime.datetime.fromtimestamp(ts)
6日期时间转时间戳:t2=t1.timestamp()
3、时间运算 : ( 返回timedelte() 对象)
timedelta类是用来计算二个datetime对象的差值的。
此类中包含如下属性:
1、days:天数
2、microseconds:微秒数
3、seconds:秒数(>=0 并且 <1天)
4、total_seconds : 总秒数
4、例子
import datetime
# 日期
# date = datetime.date(2018,6,19)
# print(date)
# print(type(date))
# 时间 : : :
# t = datetime.time(10,50,30,1000)
# print(t)
# print(type(t))
# 日期时间
# dt = datetime.datetime(2018,6,19,10,55,30) # 日期必须要有,时间可以没有
# print(dt)
# print(type(dt))
# 时间间隔
# dlt = datetime.timedelta(hours=4)
# print(dlt)
# print(type(dlt))
# print(dt + dlt)
# 当前时间 东八区
# now = datetime.datetime.now()
# print(now)
# 格林威治时间
# utc = datetime.datetime.utcnow()
# print(utc)
# 北京时间,东八区时间
# delt = datetime.timedelta(hours=8)
# bei_jing = utc + delt
# print(bei_jing)
# 解析时间
# strp = datetime.datetime.strptime('jun-14-18 11:45','%b-%d-%y %H:%M')
# print(strp)
# 格式化时间
# strf = now.strftime('%Y-%m-%d %H:%M:%S')
# print(strf)
# 时间戳转换成日期时间
# t = datetime.datetime.fromtimestamp(0)
# print(t)
# 日期时间转换成时间戳
# t1 = t.timestamp()
# print(t1)
# 获取datetime对象中数据
now = datetime.datetime.now()
# print(now)
# 小时 分钟 秒钟
# print(now.hour)
# print(now.month)
# print(now.day)
# 星期
# print(now.weekday()) # 范围0-6
# print(now.isoweekday()) # 范围1-7
# iso标准化日期 isocalendar(...) # year年份,week number 周数,weekday星期
# a = now.isocalendar()
# year = now.isocalendar()[0]
# weekNum = now.isocalendar()[1]
# weekdaY = now.isocalendar()[2]
# print(a)
# print(year)
# print(weekNum)
# print(weekdaY)
# 计算你出生了多久
def how_long(year,month,day,hour=0,minut=0,second=0):
return datetime.datetime.now() - datetime.datetime(year,month,day,hour,minut,second)
a = how_long(1997,9,3)
print(a)
阶段二:logging模块
1、logging用法
1.初始化 logger = logging.getLogger(“name")
2.设置级别 logger.setLevel(logging.DEBUG),Logging中有NOTSET < DEBUG < INFO <WARNING < ERROR < CRITICAL这几种级别,日志会记录设置级别以上的日志
3.定义Handler,常用的是StreamHandler和FileHandler,
StreamHandler:将日志在控制台输出
FileHandler: 将日志记录到文件里面
4.formatter,定义了log信息的 内容 和格式,
例如:'%(asctime)s %(message)s', '%Y-%m-%d %H:%M:%S'
2、logging 中几种级别
NOTSET < DEBUG < INFO < WARNING< ERROR < CRITICAL
级别 | 何时使用 |
---|---|
DEBUG | 详细信息,典型地调试问题时会感兴趣 |
INFO | 证明事情按照预期工作 |
WARNING | 表明发生了一些意外,或者不久的将来会发生问题(如‘磁盘满了’)软件还是在正常工作 |
ERROR | 由于更严重的问题,软件已不能执行一些功能了 |
CRITICAL | 严重错误,表明软件已不能继续运行了 |
3、Formatter 中已有格式
%(name)s Logger的名字
%(levelname)s 文本形式的日志级别
%(message)s 用户输出的消息
%(asctime)s 字符串形式的当前时间。默认格式是“2003-07-08 16:49:45,896”。逗号后面的是毫秒
%(levelno)s 数字形式的日志级别
%(pathname)s 调用日志输出函数的模块的完整路径名,可能没有
%(filename)s 调用日志输出函数的模块的文件名
%(module)s 调用日志输出函数的模块名
%(funcName)s 调用日志输出函数的函数名
%(lineno)d 调用日志输出函数的语句所在的代码行
%(created)f 当前时间,用UNIX标准的表示时间的浮点数表示
%(relativeCreated)d 输出日志信息时的,自Logger创建以来的毫秒数
%(thread)d 线程ID。可能没有
%(threadName)s 线程名。可能没有
%(process)d 进程ID。可能没有
4、logging编程范式
import logging
# 1.初始化,实例化的过程
logger = logging.getLogger('test_log')
# 2.设置级别
logger.setLevel(logging.DEBUG) # 设置最低级别,小于它的级别不会输出
# 3.定义handler
# 3.1 控制台输出
sh = logging.StreamHandler()
sh.setLevel(logging.ERROR) # error 情况下,就会在控制台输出
# 3.2 写入log文件
fh = logging.FileHandler('test_file')
fh.setLevel(logging.DEBUG) # debug 级别以上我就写入log文件里
# 4.定义日志格式,格式化
formatter = logging.Formatter(
'时间: &(asctime)s,'
'日志级别: %(levelname)s,'
'日志消息: %(message)s'
)
# 把定义好的格式化添加到我们刚才定义的handler当中去
sh.setFormatter(formatter)
fh.setFormatter(formatter)
# 将我们的handler添加到logger里面去
logger.addHandler(sh)
logger.addHandler(fh)
if __name__ == '__main__':
# logger.debug('测试')
# logger.info('正常运行')
# logger.warn('警告')
# logger.error('报错')
# logger.critical('非常严重的错误')
def func(a):
try:
num = 20/a
logger.info(num) # 如果不报错,就正常运行
except Exception as e:
logger.error(e)
# 如果报错,就把报错信息扔进来,然后返回这个级别
func(0)
08 datetime与logging模块(进阶)的更多相关文章
- Python的 Datetime 、 Logging 模块
Datetime模块 datetime是python处理时间和日期的标准库 类名 date类 日期对象,常用的属性有 year . month . day time类 时间 ...
- logging模块进阶
python利用logging模块来记录日志主要涉及四个类 logger提供了应用程序可以直接使用的接口 handler将logger创建的日志提供的输出发送到指定目的地. filter起到过滤作用, ...
- day21——面向对象初识、结构、从类名研究类、从对象研究类、logging模块进阶版
day21 面向对象的初识 面向对象第一个优点: 对相似功能的函数,同一个业务下的函数进行归类,分类. 想要学习面向对象必须站在一个上帝的角度去分析考虑问题. 类: 具有相同属性和功能的一类事物. 对 ...
- logging模块进阶2
1.两种级别设置: 全局级别:生成logger对象后设置的级别 局部级别:生成handler对象设置的级别 我们都知道输出的级别不能低于设定的级别,那么全局级别和局部级别哪一个对输出产生影响? 经过多 ...
- 模块调用,datetime,time,logging,递归,双层装饰器, json,pickle迭代器和生成器
一.python模块(导入,内置,自定义,开源) 1.模块简介 模块是一个包含所有你定义的函数和变量的文件,其后缀名是.py.模块可以被别的程序引入,以使用该模块中的函数等功能.这也是使用python ...
- python模块概况,json/pickle,time/datetime,logging
参考: http://www.cnblogs.com/wupeiqi/articles/5501365.html http://www.cnblogs.com/alex3714/articles/51 ...
- Python自动化运维之9、模块之sys、os、hashlib、random、time&datetime、logging、subprocess
python模块 用一砣代码实现了某个功能的代码集合. 类似于函数式编程和面向过程编程,函数式编程则完成一个功能,其他代码用来调用即可,提供了代码的重用性和代码间的耦合.而对于一个复杂的功能来,可能需 ...
- 潭州课堂25班:Ph201805201 python 模块 datetime,logging 第七课 (课堂笔记)
datetime 模块 # -*- coding: utf-8 -*-# 斌彬电脑# @Time : 2018/7/9 0009 20:42import datetime d = datetime.d ...
- Python进阶(十一)----包,logging模块
Python进阶(十一)----包,logging模块 一丶包的使用 什么是包: 包是通过使用 .模块名的方式组织python模块名称空间的方式. 通俗来说,含有一个__init__.py文件的文 ...
随机推荐
- LDA概率图模型之贝叶斯理解
贝叶斯.概率分布与机器学习 转自:http://www.cnblogs.com/LeftNotEasy/archive/2010/09/27/1837163.html 本文由LeftNotEasy原 ...
- bit_count
bit_count函数的含义 用来计算二进制数中包含1的个数. select BIT_COUNT(10); 因为10转成二进制是1010,所以该结果就是2. bit_or函数的含义 就是对两个二进制数 ...
- CentOS7 查询已安装的包方便整理 /卸载
以PHP为例.首先查看已安装的PHP rpm -qa |grep php 输出结果: php-cli--.el7.x86_64 php-common--.el7.x86_64 查询rpm包的安装时间和 ...
- PS软件怎么把视频转成gif动态图?
PS软件怎么把视频转成gif动态图?Adobe PhotoShop软件的最新版本是可以编辑视频的,并且可以将视频转换为GIF动态图,使用也很简单,下面分享ps制作gif动态图的教程,需要的朋友可以参考 ...
- Unix 和 Linux 安装 Perl
Unix/Linux 系统上 Perl 安装步骤如下: 通过浏览器打开 http://www.perl.org/get.html. 下载适用于 Unix/Linux 的源码包. 下载 perl-5.x ...
- 716. Max Stack (follow up questions for min stack)
Design a max stack that supports push, pop, top, peekMax and popMax. push(x) -- Push element x onto ...
- SQL SERVER 2012断日志
有一个SQL2012库的日志达到了100G左右,平时开发人员根本没有做过事务日志备份,而磁盘空间已经快满了.所以,只能截断它.但是,由于从2K8以后,SQL SERVER好像不再提供 truncate ...
- 2019.03.19 ZJOI2019模拟赛 解题报告
得分: \(100+10+45=155\)(\(T1\)又是水题,\(T2\)写暴力,\(T3\)大力\(STL\)乱搞) \(T1\):哈夫曼树 首先,根据题目中给出的式子,可以发现,我们要求的其实 ...
- 【[POI2012]PRE-Prefixuffix】
这道题真是非常蛇皮,卡自然溢出,还非常丧病的卡双自然溢出 一句话题意,求出最长的前缀后缀满足\(AB.........BA\)的形式 也就是说外面一个\(next\),里面一个\(next\) 本来想 ...
- UVA11294 Wedding
嘟嘟嘟 大佬们都说这是2-SAT入门题,然而对于刚学2_SAT的本菜鸡来说半天才理解…… 题面:新娘和新郎不能坐在同一侧,妻子和丈夫不能坐在同一侧,有**关系的两个人必须至少一个坐在新娘一侧,问方案. ...