您的位置:首页 > 编程语言 > Python开发

Python日志、序列化、正则模块

2017-05-07 09:10 260 查看

使用Python内置模块的目的:拿来别人已经写好的模块功能,直接import内置模块使用,简化程序,避免重复造轮子的过程,提示自己的开发效率;

 

一、 loging日志模块:

 

1、 loging模块可以记录不同安全级别日志

debug、info、warning、error、critical(关键的)可以灵活使用;(5中安全级别日志全部记录,或选择其中几种级别记录)

import logging

logging.debug("修复") #5种安全级别 灵活使用
logging.info("提示")
logging.warning("注意")#--------注意---------高于waring(默认等级)此安全级别的日志才会显示到屏幕上
logging.error("错误")
logging.critical("重要")

执行结果
WARNING:root:注意
ERROR:root:错误
CRITICAL:root:重要

 

2、日志输出流

既然记录了日志就应该  显示到屏幕 或者 保存至文件,这就是日志输出流;

 

3、日志格式配置

上述日志信息单纯,记录价值不大,我们可以设置它的日志格式。loging模块提供了2种 日志配置方式;

 

 

(1)basicConfig函数配置方式一切围绕basicConfig函数里放什么参数展开

logging.DEBUG                  #设置日志安全级别 

format='%(asctime)s' #asctime:配置当前时间
'---%(message)s'                #message:配置日 义信息
'%(lineno)s', #lineno:打印输出日志函数所在的行号
datefmt='%Y-%m-%d %H:%M:%S', #设置日期格式 datefmt
filename="loger", #设置"日志输出流的文件'filename
filemode="a") #设置以追加方式记录到文件 filemode

logging.basicConfig(level=logging.DEBUG,               #设置日志安全级别 logging.DEBUG
format='%(asctime)s'               #asctime:配置当前时间
'---%(message)s'               #message:配置日志的自定义信息
'%(lineno)s',                  #lineno:打印输出日志函数所在的行号
datefmt='%Y-%m-%d %H:%M:%S',       #设置日期格式  datefmt
filename="loger",                  #设置"日志输出流的文件'filename
filemode="a")                      #设置以追加方式记录到文件 filemode
logging.debug("修复")
logging.info("提示")
logging.warning("注意")
logging.error("错误")
logging.critical("重要")

 

(2)loger对象配置日志格式

basicConfig只能同时选择一种日志输出流,而loger对象可以把日志信息,同时输出到屏幕和文件里

loger对象配置日志格式,一切围绕高度定制化、组装原则,1 创建loger 2创建输出对象 3创建输出格式对象, 相互组装起来;

loger=logging.getLogger()                   #得到一个原始的loger对象

file_stream=logging.FileHandler("Loger2")  #创建1个文件输出对象
sh=logging.StreamHandler()                 #创建一个屏幕输出对象

Format=logging.Formatter("%(asctime)s-%(levelname)s-%(message)s") #创建一个日志格式对象
#-------------------------------------------------------------------------------------------------------------
#loger配置日志格式方式:就是围绕一切高度定制化的原则展开

#(1)先创建出 loger对象,屏幕输出对象,文件输出对象,日志格式对象
# (2)让 loger对象 吸取 文件、屏幕输出流对象
#(3) 让 文件、屏幕输出流对象吸取日志格式对象功能

file_stream.setFormatter(Format)   #文件输出流吸取 日志格式对象
sh.setFormatter(Format)            #屏幕输出流吸取 日志格式对象

loger.setLevel(logging.DEBUG)      #设置日志等级
loger.addHandler(file_stream)      #原始的loger对象 吸走文件输出对象,就可以把日志信息输出到文件了;
loger.addHandler(sh)               #原始的loger对象,吸走屏幕输出对象,就可以把日志信息输出到屏幕了;
#loger对象貌似有了吸星大法,可以通过addHandler()方法,吸取对象的功能,以为己用;
loger.debug("修复")
loger.info("提示")
loger.warning("注意")      #默认安全级别也是waring,waring以上安全级别的日志才回输出
loger.error("错误")
loger.critical('重要')

 

 

 二、序列化模块 json、picle

1、 josn就是各种语言 之间 信息交换的桥梁,一种各语言普遍支持的 中间数据类型;

import re

str0='h123elloworld'
pattern0=re.compile(r'^h(.*?)e')      #创建1条匹配规则

match_obj=re.match(pattern0,str0)   #march方法返回1个match对象

# print(match_obj)                    #<_sre.SRE_Match object; span=(0, 5), match='hello'>
print(match_obj.group())            #匹配成功的字符串 hello

# print(match_obj.start())            #开始匹配的index位置 0
# print(match_obj.end())              #结束匹配的index位置 5
#
# print(match_obj.span())             #字符串 索引跨度
# print(match_obj.span(2))
re.match() re.search():只匹配找到的第一个结果

 

re.sub():替换匹配结果

re.sub([all ],flags=re.S):替换所有匹配结果,flags=re.S匹配所有换行和空格

desc=mark_safe(re.sub (r'[\n]','<br/>',desc1,flags=re.S)) #替换所有换行,在前端显示

 

re.match()和re.search()的区别?

性能

match()函数只检测RE是不是在string的开始位置匹配

search()会扫描整个string查找匹配,会扫描整个字符串并返回第一个成功的匹配


                                            
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: