python23、datatime与logging

datatime:是模块(包)不是数据库,包是类的总和,类里面有他的方法(这种是内置的),自创的包没有类和类的方法
与time包相似,time.time获取当前时间
比time好,比time只表示时间,datatime多了data不仅表示时间还多表示了日期
datatime.data()表示日期对象,括号放入参数自动生成日期对象
datatime.time()表示时间对象
datatime.datatime()表示日期和时间的对象,只写日期会默认加时间为0的整点
datatime.timedelta()表示时间间隔,在括号里输入间隔的单位=数值,
然后打印时输入其他的日期、时间对象+时间间隔实例化的对象得到间隔过后的时间,闹钟的使用方式与此有关

可以把包、数据库当作一个类,有各自的方法,以上的类加方法都会自动生成对象就能实例化对象
后面的data、time都是类名
类的方法就是类的方法,方法不能点出属性,除非方法里面有属性,但内置的一般可以,

获取当前日期时间:一般要只导入datetime数据库只能使用datetime.datetime.now(),
如果要使用datetime.now();就要先输入from datetime import datetime 导出包里的 datetime类
以上对象后面加now,打印当前时间,utcnow是打印‘格林威治时间’这些是类的方法,
还有datetime.datetime.now().date()同时用两个方法,要看这个函数的返回值返回的是不是对象,如果是对象的话就可以继续调用函数
因为当前的类对象加now还是一个类的对象,类(的对象)还可以使用方法,身份不变可以一直使用

日期时间转化为时间戳:时间日期对象.timestamp();
时间戳转化为日期时间:datetime.fromtimestamp(时间戳)
时间戳就是格林威治时间开始算的时候到现在的时间(以秒为单位)

日期时间对象转字符串:时间日期对象.strftime(format)
datetime.now().strftime("%Y-%m-%d")导出了包里的 datetime类from datetime import datetime可以不用输入两个datetime
datetime.datatime.now().strftime("%Y-%m-%d")
后面加strftime("%Y-%m-%d")都是格式化成字符形式
字符串转日期时间对象:datetime.strptime(data_str(字符形式的时间), format1)
字符形式的时间sep-13-12这种是外国的,12是年份放在最后面,这样format对应的就是%b-%d-%Y(%b是外国的月份)
format1(变量)=’%Y-%m-%d %H:%M:%S’ 年月日有对应字母
now提取时间必用

time包,time.time()也是他求的时间戳
time.struct_time()括号里加参数,struct_time也可以像datetime一样格式化的方法,把数组转换成时间格式
time.asctime()把日期时间转换成英文格式
time.ctime()与asctime类似但有区别
time.gmtime()将一个时间戳转换为UTC时区(0时区)
time.localtime()查看UTC本地时间

logging模块:
一般形式写日志:
在logging.basicConfig()设置filename 和filemode,则只会保存log到文件,不会输出到控制台。
logging是python标准库里自带的日志模块,用软件记录软件,把问题事件等记录到logging
LOG_FORMAT="%(asctime)s-%(levelname)s-%(message)s"
LOG_FORMAT为大写是因为设置就不改的一个常量

logging.basicConfig() 对logger进行配置
logging.basicConfig(level=logging.WARNING,format=LOG_FORMAT)
format是按照上面设置好的常量格式输出

logging.level(message) 创建一条level级别的日志,
logging.debug(‘asawdawdasd’)
logging.info(‘asd’)

level=logging.WARNING第一条对应从WARNING开始按logging.level(message)设置的顺序开始往下的全部执行
logger.info(“this is info”) 这里如果level=logging.info就是从info开始,ogging.debug的调用没有产生日志,
logger.debug(“this is debug”) 也就是上面说的调用等级没有超过默认等级将不会有输出;
logger.warning(“this is warning”) 而其他的调用等级超过默认等级的时候,日志记录的就是调用等级。
logging.error(“this is error”) 所以只和等级有关,和排序无关
logger.critical(“this is critical”)

所以只输出
2016-09-13 18:52:37,492 INFO - this is info
2016-09-13 18:52:37,492 WARNING - this is warning
2016-09-13 18:52:37,492 ERROR - this is error
2016-09-13 18:52:37,492 CRITICAL - this is critical

%(asctime)s 日志事件发生的时间
%(levelname)s 该日志记录的日志级别
%(message)s 日志记录的文本内容
Logging 中几种级别:DEBUG (调试)< INFO (正常运行)< WARNING (警告)
< ERROR (错误,某些板块不能用但还能运行)< CRITICAL(危险,彻底不能用)

模块化写日志:
组件的使用:logging模块的类Logger、Handler、Filter、Formatter的使用
创建一个logger(日志处理器)对象,__name__为当前文件的名字,getLogger设置对象名的方法
logger.setLevel()括号加logging.级别,设置执行的最低记录级别

定义handler(日志处理器),决定把日志发到哪里
a=logging.StreamHandler()定义处理器到控制台的对象
设置日志级别(level)
a.setLevel() 括号加logging.级别,设置响应级别
StreamHandler 输出到控制台
FileHandler 输出到文件(文件名后缀.或_加log),在括号里面最后面加入encoding=utf8可以编码防止存入文件后乱码)

设置handler的输出格式Formatters(日志格式器)
formatter(formatter设置对象)=logging.Formatter(同上面LOG_FORMAT格式一样)mode=w或a,操作文件方式
mode:a+为追加log,设置为w+则表示每次清空,重新记录log覆盖之前的日志
a.setFormatter(formatter)

把handler的对象添加到对应的logger中去
logger.addHandler(a)

执行上面的函数必须在开头有主函数,这是固定 的要求
if name=main
下面就可以开始缩进输入判断语句等其他函数语句了
意思是从这开始执行 后面你的代码可以根据自己的需求写
主程序的级别与组件的级别不同也能执行,不受组件的设置级别影响
开始启动的主程序,执行代码的首要条件,为了代码清晰,给别人一眼就可以看到代码是从哪里开始

input这个方法是从控制台输入
from 类 import 类对象,import后是被引出的内容

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

T o r

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值