本文目录:
一、logging模块
二、logging模块的使用
三、hashlib模块
四、re模块

一、logging模块

import logging

# 1 日志的级别
logging.debug("这是一个调试信息") #
logging.info("常规信息") #
logging.warning("警告信息") #
ogging.error("错误信息") #
logging.critical("严重错误") #
#
# 在logging模块中有对应的常量用来表示级别
# 默认情况下 默认的级别30 WARNING 日志的位置是控制台
#
# 2 自定义日志的配置
logging.basicConfig(
filename="a.log",
filemode="at",
level=10,
format="%(asctime)s %(levelname)s %(funcName)s %(lineno)s %(message)s",
datefmt="%Y-%m-%d %X %p") # logging.debug("这又是一个调试信息")
#
#日志模块的四个核心对象
"""
1.logger 日志生成器
2.filter 过滤器
3.handler 处理器
4.formater 格式处理器
"""
#
#1.创建一个日志生成器
mylog = logging.getLogger("mylog")
mylog.setLevel(logging.DEBUG)
#
# 2.建一个日志处理器
fh = logging.FileHandler("b.long",encoding="utf-8")
#
# 3.搞一个格式处理器
# fm = logging.Formatter(
# "%(asctime)s %(levelname)s %(funcName)s %(lineno)s %(message)s",
# datefmt="%Y-%m-%d %X %p")
#
# 4.将三个对象进行关联
mylog.addHandler(fh)
fh.setFormatter(fm)
# #测试
mylog.debug("mylog 的 测试") # 日志的继承
log1 = logging.getLogger("father")
log2 = logging.getLogger("father.son")
log3 = logging.getLogger("father.son.grandson") #默认值为True标识 有继承关系 当子的日志产生日志是 给他的父级以及父级以上都发了一份
#如果不需要就设置False
#log3.propagate = False fh = logging.FileHandler("c.long",encoding="utf-8") fm = logging.Formatter(
"%(asctime)s %(levelname)s %(funcName)s %(lineno)s %(message)s",
datefmt="%Y-%m-%d %X %p") log1.addHandler(fh)
log2.addHandler(fh)
log3.addHandler(fh) fh.setFormatter(fm) log1.warning("father.log")
log1.warning("father.son.log")
log3.warning("father.son.grandson")

二、logging模块的使用

import logging.config
#以字典来配置文件 传入一个字典对象 就不需要在编写上面那一堆代码 logging.config.dictConfig() #流处理器
log1 = logging.getlogger("a")
#输出到文件
fh = logging.StreamHandler()
#输出到控制台
sh = logging.StreamHandler() log1.addHandler(sh)
log1.addHandler(fh)
fm = logging.Formatter(
"%(asctime)s %(levelname)S %(funcName)s %(lineno)s %(message)s",
datetime = "%Y-%m-%d %X %p")
sh.selfFormatter(fm) log1.warning("测试2") import lib.common
logger = lib.common.log() def login():
logger.debug("测试 测试!") login()

srtting文件

standard_format="%(asctime)s %(levelname)S %(funcName)s %(lineno)s %(message)s"
simple_format="%(asctime)s %(message)s"
complete_format="%(asctime)s %(levelname)S %(funcName)s %(lineno)s %(thread)s %(process)s %(message)s"
logfile_path = r"d.log" LOGGING_DIC = {
'version': 1,
'formatters': {
'standard': {
'format': standard_format
},
'simple': {
'format': simple_format
},
"complete":{
"format": complete_format
}
},
'filters': {},
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
'formatter': 'simple'
},
'default': {
'level': 'DEBUG',
'class': 'logging.handlers.RotatingFileHandler',
'formatter': 'standard',
'filename': logfile_path, #
'maxBytes': 1024 * 1024 * 5, # 日志文件的最大大小为5M 超出后 换文件
'backupCount': 5, # 最多留五个日志文件
'encoding': 'utf-8',
},
},
'loggers': {
# 在getLogger的时候 如果指定的名称 不存在 或者不给名称 用的就是默认的
# 在这里如果key为空 它就是默认的
# 你可以自己定义生成器的名称 并且他们还能使用相同的默认配置
'': {
'handlers': ['default', 'console'],
'level': 'DEBUG',
'propagate': False,
},
},
}

三、hashlib模块

"""
    hash lib
    hash是一种算法  是将一个任意长的数据 根据计算 得到一个固定长度特征码
    特征: 不同输入 可能会有相同的结果 几率特别小
        相同的输入 必然得到相同结果
        由于散列(特征)的性质 从原理来看是不可能 反解
    用来 验证   两个输入的数据是否一致
    使用场景
    1.密码验证
                    123321   jahsajshajhsjahjas
                        client 加密后结果      server 拿到加密后
    2.验证数据是否被篡改 比如游戏安装包  有没有被改过
    为了防止别人撞库成功  可用提升密码的复杂度   其次可以为密码加盐 (加点内容进去)
"""
m = hashlib.md5("aaa".encode("utf-8"))
print(len(m.hexdigest())) # 撞库破解的原理 有人事先 把常见的 明文和密文的对应关系 存到了数据库中
# 运气好就能查询到
pwds = {"aaa":"47bce5c74f589f4867dbd57e9ca9f808"} h1 = hashlib.sha512("".encode("utf-8"))
h2 = hashlib.sha3_512("".encode("utf-8")) # print(len(h.hexdigest()))
print(h1.hexdigest())
print(h2.hexdigest()) # 2b70683ef3fa64572aa50775acc84855 # 加盐
m = hashlib.md5("".encode("utf-8"))
#加
m.update("abcdefplkjoujhh".encode("utf-8")) print(m.hexdigest()) import hmac
# 没啥区别 只是在创建的时候必须加盐
h = hmac.new("abcdefjjjj".encode("utf-8")) h.update("".encode("utf-8")) print(h.hexdigest())

四、re模块

"""
    re模块
    主要正则表达式相关
    什么是正则表达式  一堆带有特殊意义的符号组成式子
    它的作用 处理(匹配 查找 替换 )字符串
    1.
    在爬虫中大量使用 其实有框架帮你封装了这些复杂的正则
    2.
    在网站和手机app的注册功能中大量使用 例如判断你的邮箱地址是否正确
"""

import re

# ===============================单个字符匹配=========
print(re.findall("\n","1\n")) # 匹配换行符
print(re.findall("\t","1asasas121 \t")) # 匹配制表符 # ========================范围匹配===========
print(re.findall("\w","1aA_*")) # 匹配数字字母下划线
print(re.findall("\W","1aA_*,")) # 匹配非数字字母下划线
print(re.findall("\s"," \n\r\t\f")) # 匹配任意空白字符
print(re.findall("\S"," \n\r\t\f")) # 匹配任意非空白字符
print(re.findall("\d","123abc1*")) # 匹配任意数字
print(re.findall("\D","123abc1*")) # 匹配任意非数字
print(re.findall("[abc]","AaBbCc")) # 匹配 a b c都行
print(re.findall("[^abc]","AaBbCc")) # 除了 a b c都行
print(re.findall("[0-9]","AaBbCc12349")) # 匹配中括号内0-9的数字
print(re.findall("[a-z]","AaBbCc12349")) # 匹配小写字母a-z 英文字母
print(re.findall("[A-z]","AaBbC:c

python常用模块:logging、hashlib、re的更多相关文章

  1. Python常用模块之hashlib(加密)

    Python常用模块之hashlib(加密) Python里面的hashlib模块提供了很多加密的算法,这里介绍一下hashlib的简单使用事例,用hashlib的md5算法加密数据import ha ...

  2. Python常用模块之hashlib模块

    1.hashilib模块的功能 python的hashlib提供了常见的摘要算法,如MD5, SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换成一 ...

  3. python常用模块补充hashlib configparser logging,subprocess模块

    一.hashlib模板 Python的hashlib提供了常见的摘要算法,如MD5,SHA1等等. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定 ...

  4. Python常用模块--logging

    (转载) 原文:http://www.cnblogs.com/dahu-daqing/p/7040764.html 1 logging模块简介 logging模块是Python内置的标准模块,主要用于 ...

  5. Python常用模块之hashlib

    Python里面的hashlib模块提供了很多加密的算法,这里介绍一下hashlib的简单使用事例,用hashlib的md5算法加密数据 import hashlib hash = hashlib.m ...

  6. python常用模块集合

    python常用模块集合 Python自定义模块 python collections模块/系列 Python 常用模块-json/pickle序列化/反序列化 python 常用模块os系统接口 p ...

  7. python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib subprocess logging re正则

    python 常用模块 time random os模块 sys模块 json & pickle shelve模块 xml模块 configparser hashlib  subprocess ...

  8. 常用模块之hashlib,configparser,logging模块

    常用模块二 hashlib模块 hashlib提供了常见的摘要算法,如md5和sha1等等. 那么什么是摘要算法呢?摘要算法又称为哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定 ...

  9. Python常用模块-摘要算法(hashlib)

    Python常用模块-摘要算法(hashlib) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.MD5算法参数详解 1.十六进制md5算法摘要 #!/usr/bin/env p ...

  10. Python常用模块——目录

    Python常用模块学习 Python模块和包 Python常用模块time & datetime &random 模块 Python常用模块os & sys & sh ...

随机推荐

  1. maven 依赖原则

    maven 依赖原则 ###间接依赖路径最短优先 a->b->c1.0 a->e->f->c1.1 ====>c1.0 申明顺序优先 <!-- test1 - ...

  2. C语言递归之二叉树的最大深度

    题目描述 给定一个二叉树,找出其最大深度. 二叉树的深度为根节点到最远叶子节点的最长路径上的节点数. 说明: 叶子节点是指没有子节点的节点. 示例 给定二叉树 [3,9,20,null,null,15 ...

  3. 如何查看Nginx安装了哪些模块

    当你要编译安装Nginx时,在你执行完./configure之后,会在这个目录生成一个objs这个目录. 进入objs目录下,会看到有一个ngx_modules.c这个文件,这个文件里都是要编译进Ng ...

  4. python 输出对齐

    几种不同类型的输出对齐总结: 先看效果: 采用.format打印输出时,可以定义输出字符串的输出宽度,在 ':' 后传入一个整数, 可以保证该域至少有这么多的宽度. 用于美化表格时很有用. >& ...

  5. 处理idea加载不到Spring的xml或者properties配置文件

    在pom文件的 标签钱添加以下代码 <!--防止ieda加载不到xml或者properties文件开始--> <resources> <resource> < ...

  6. 【重启C++】-- 序

    好久没看C++的东西了,该忘的也忘得差不多了,现在又要开始学,一点一滴的记录起来吧.

  7. find_in_set使用

    FIND_IN_SET(str,strList) str 要查询的字符串 strList 字段名,参数以“,”分隔,如(1,2,6,8) 查询字段(strList)中包含的结果,返回结果null或记录 ...

  8. Jupyter修改默认文件保存路径

    一.Jupyter安装 前提需要已经安装好python环境~ 接着,Python3x版本安装路径下执行pip命令安装 pip3 install Jupyter 看网速,安装完后会显示安装成功一段话即可 ...

  9. Git 入门:概念、原理、使用

    出处: git入门:概念.原理.使用 git和Github 概念 Git --- 版本控制工具(命令). git是一个开源的分布式版本控制系统,用以有效.高速的处理从很小到非常大的项目版本管理.git ...

  10. T100——修改单身栏位,开窗,当前行

    PRIVATE FUNCTION axmt500_update_xmdc028() ###更改出货库位 DEFINE l_i INT DEFINE l_index INT DIALOG ATTRIBU ...