python笔记6

日志模块

1 logger对象 用来产生日志

logger1 = logging.getLogger("银行业务相关")

日志名是用来区分记录的日志相关信息

2 filter对象 用来过滤日志

3 formmatter对象 定制日志的格式

4 handler对象 控制日志的去向 1 文件 2终端

fh1 = logging.FileHandler("a1.log","encoding=utf-8")

ch = logging.StreamHandler()

##建立logger对象与handler的绑定对象

logger1.addHandler(fh1)

logger1.addHandler(ch)

#format 对象,定制日志的格式

formatter1 = logging.Formatter(

fmt = ""

datefmt =

)

为handler对象绑定日志格式

fh1.setFormatter(formatter)

## d设置日志级别‘

1 logger

2 handler 只有2层控制,最终日志才会进入对象

logger.setLevel(10)

##格式

import os

LOGGING = {

‘version‘: 1,

‘disable_existing_loggers‘: True,

‘formatters‘: {

‘lqm_format‘: {

‘format‘: ‘%(levelname)s %(asctime)s %(module)s %(process)d %(thread)d %(message)s‘

},

‘simple‘: {

‘format‘: ‘%(levelname)s %(message)s‘

},

},

‘filters‘: {

},

‘handlers‘: {

‘system‘: {

‘class‘: ‘logging.handlers.TimedRotatingFileHandler‘,

## ‘filename‘: os.getenv(‘LOGS_path‘, ‘logs‘) + "/" + "system.log",

‘filename‘: os.path.join(os.getenv(‘LOGS_path‘, ‘logs‘) ,"system.log"),

‘formatter‘: ‘lqm_format‘,

‘when‘: ‘midnight‘,

‘interval‘: 1,

‘backupCount‘: 30,

},

‘user‘: {

‘class‘: ‘logging.handlers.TimedRotatingFileHandler‘,

‘filename‘: os.getenv(‘LOGS_path‘, ‘logs‘) + "/" + "user.log",

‘formatter‘: ‘lqm_format‘,

‘when‘: ‘midnight‘,

‘interval‘: 1,

‘backupCount‘: 30,

},

},

‘loggers‘: {

‘user‘: {

‘handlers‘: [‘user‘, ],

‘level‘: os.getenv(‘LOGS_level‘, ‘DEBUG‘),

‘propagate‘: True,

},

‘system‘: {

‘handlers‘: [‘system‘, ],

‘level‘: os.getenv(‘LOGS_level‘, ‘DEBUG‘),

‘propagate‘: True,

},

}

}

二 序列 化

json

只能支持部分python的数据类型,所语言类型都支持有

pickle

只有python支持,包含所有python的类型

dic = {‘name‘:"esz"}

with open("user.json",w) as f:

##等于将dic的文件,给写入f中

json.dump(dic,f)

## 独处f的数据并放入dict中

dic = json.load(f)

1 import pickle

2

3 dic={‘name‘:‘alvin‘,‘age‘:23,‘sex‘:‘male‘}

4

5 print(type(dic))#<class ‘dict‘>

6

7 j=pickle.dumps(dic)

8 print(type(j))#<class ‘bytes‘>

9

10

11 f=open(‘序列化对象_pickle‘,‘wb‘)#注意是w是写入str,wb是写入bytes,j是‘bytes‘

12 f.write(j) #-------------------等价于pickle.dump(dic,f)

13

14 f.close()

15 #-------------------------反序列化

16 import pickle

17 f=open(‘序列化对象_pickle‘,‘rb‘)

18

19 data=pickle.loads(f.read())# 等价于data=pickle.load(f)

20

21

22 print(data[‘age‘])

三 hash模块

 hash 1  校验文本内容
      2  hash 固定
      3 明文转密码进行传输

m = hashlib.md5()
m.update(b"hello")   这个等于  m.update("hello".encode("utf-8"))
m.update(b"ss")
m.hexdigest() 获取到密文密码

import hmac
m = hmac.new(‘sss‘.encode("utf-8"))

m1=hashlib.sha256()
m1.update(‘hello‘.encode(‘utf-8‘))
print(m1.hexdigest())

m2=hashlib.sha512()
m2.update(‘hello‘.encode(‘utf-8‘))
print(m2.hexdigest())

四 re 模块

正则 用一堆特殊符号组成的规则去一个文本/字符串匹配符号规则的内容

re.findall("\w",str)

重复匹配  。 ? * + {m,n}

print(re.findall)

import re

换行 不匹配

print(re.findall("a.c","123131asc,ssfafaa-c"))

就算换行也匹配

print(re.findall("a.c","123131asc,ssf\nafaa-c",re.DOTALL))

? 匹配0个或者一个 ,有必须匹配,如果没有也可以

print(re.findall(‘ab?‘,"aa ssafsfaabbssa"))

* 匹配0个或者无穷个

+ 匹配一个或者无穷个

{n,m}

print(re.findall(‘\d+.?\d+‘))

.* 贪婪匹配,选择最多的值

print(re.findall("a.*c",‘assfafasfcssssfafsfsf111223c‘))

匹配到 assfafasfcssssfafsfsf111223c

.? 非贪婪匹配,匹配早少的复合的值

print(re.findall("a.c",‘assfafasfcssssfafsfsf111223c‘))

匹配到 asfc

分组 ()与 ! conpan(ies|y) 可以取匹配 ies 与 y

conpan(?ies|y) 可以匹配到 conpanies 和conpany

print(re.findall(‘href="(.?)"‘,‘点击‘))#[‘http://www.baidu.com‘]

print(re.findall(‘href="(?:.?)"‘,‘点击‘))#[‘href="http://www.baidu.com"‘]

[] 匹配的也是一个字符,但这个字符必须是[]内定义的

print(re.findall(‘a[a-zA-Z]c‘,"abcsacadcaoc"))

rex = ‘a[+-*/]‘ ##去匹配+,- *,/

print(re.findall(‘e‘,‘alex make love‘) )

原文地址:https://www.cnblogs.com/liuqimin/p/9033667.html

时间: 2024-10-03 11:20:41

python笔记6的相关文章

Python笔记_01列表 和元祖

Python笔记 第一章 列表和元祖 1.通用序列操作 所有序列都可以进行某些特定操作,包括:索引(indexing).分片(slicing).加(adding).乘(multiplying)以及检查某元素是否属于列表成员. 迭代:依次对序列中的每个元素重复执行某些操作. 序列的索引:通过元素在列表中的位置可以定位到该元素,这就是列表的索引,使用类似于list[0]对元素进行索引,索引0指向第一个元素.也可使用负数对元素进行索引,使用负数对元素索引时,列表中的最后一个元素由-1表示,例如list

玩蛇(Python)笔记之基础Part3

玩蛇(Python)笔记之基础Part1 一.集合 1.set 无序,不重复序列 {}创建,直接写元素 2.set功能 __init__()构造方法,,使用强制转换就会调用此方法 1 set1 = {'year', 'jiujiujiu'} 2 print(type(set1)) 3 # 创建集合 4 s = set() # 创建空集合 5 li = [11, 22, 11, 22] 6 s = set(li) set 3.集合的基本操作 1 # 操作集合 2 s1 = set() 3 s1.a

Python笔记(四)

在<Python笔记(三)>中,我记录关于Python中序列问题的知识.个人觉得确实比Java中的集合框架简单.之前也说了,Python是一种高级面向对象的语言,它的每一个变量都称为对象.今天我接触了面向对象的编程.下面是这篇博客的目录: 1.类与对象 2.输入输出 3.异常 类与对象: 我们都知道面向对象的语言具备四个特性:抽象,继承,封装,多态.Java,C++是这样,Python也不例外.在Python中,我们定义一个类,使用关键字class.形式如下:class classname:.

python笔记 - day7-1 之面向对象编程

python笔记 - day7-1 之面向对象编程 什么时候用面向对象: 多个函数的参数相同: 当某一些函数具有相同参数时,可以使用面向对象的方式,将参数值一次性的封装到对象,以后去对象中取值即可: sele是什么? self是一个python自动会给传值得参数: 哪个对象执行方法,self就是哪个对象: 构造方法: 类中有一个特殊的方法,__init__,类()自动执行: 面向对象,三大特性: 封装,继承,多态:  

Python笔记之不可不练

如果您已经有了一定的Python编程基础,那么本文就是为您的编程能力锦上添花,如果您刚刚开始对Python有一点点兴趣,不怕,Python的重点基础知识已经总结在博文<Python笔记之不可不知>中,尽管本文是自己学习Python过程中的总结,在大神看来,或许略欠火候,希望批评指正,万分感谢! 本文是作者学习成绩的见证,请尊重劳动成果!版权归作者和博客园共有,欢迎转载,但请保留本文出处http://www.cnblogs.com/itred/p/4687287.html ,  作者:itRed

python笔记之列表和元组

pyhton的列表和元组,说白了其实就是一种数据结构,只是在python当中更加方便的去操作而已.. 1.序列 其实字符串就是采取序列的方式的: string = "hello" print string[0] 结果为:h 对比其他编程语言,python还有一个负值索引的概念: 序列的分片: first = [0,1,2,3,4,5,6,7,9] print first[1:6:2] 针对first[1:6:2]这条语句: 1代表的起始索引,不写,默认为0 6代表结束索引,不写默认为所

整理python笔记

1.python笔记:while.if.for.编码 2.  模拟登陆 3.  python笔记:字符.列表.字典.元祖.数据类型

玩蛇(Python)笔记之基础Part2

玩蛇(Python)笔记之基础Part2 一.列表 1.列表 别的语言叫数组 python牛逼非要取个不一样的名字 1 age = 23 2 name = ["biubiubiu", "jiujiujiu", 22, age] 3 # namecopy = name 4 # namecopy.pop() 5 print(name) 6 # print(namecopy) List 2.列表取值 正常index 从零开始,,取倒数加负号 倒数第一就是[-1] 3.列表

python笔记 - day8

python笔记 - day8 参考: http://www.cnblogs.com/wupeiqi/p/4766801.html http://www.cnblogs.com/wupeiqi/articles/5017742.html 大纲 面向对象三大特性之多态 类成员之静态字段和普通字段 类成员之普通方法和静态方法以及类方法 类成员之属性 类成员之成员修饰符 类成员之特殊成员 其他之isinstance和issubclass 其他之super的应用 实例之自定义有序字典 单例模式 基本异常

python笔记 - day4-之装饰器

             python笔记 - day4-之装饰器 需求: 给f1~f100增加个log: def outer(): #定义增加的log print("log") def f1(): outer() #分别调用函数 print("F1") def f2(): outer() #分别调用函数 print("F2") def f100(): outer() #分别调用函数 print("F100") f1() f2