python模块(三)

hashilib模块

  hashilib模块的主要作用是加密,可以将明文数据通过一系列算法转化为秘闻数据。

  目的是为了数据的安全。

  加密算法包括md系列,sha系列,base系列,hmac系列。

  基本使用

    1.先确定算法类型。

    2.将明文数据传递给算法。

    3.获得加密后的密闻数据。

 

 

  分段传值

    在传递明文数据时,如果明文数据是一致的,那么无论怎么传值结果都是一样的。

 

 

  算法选择

    密文越长表示算法复杂,对应的破解算法的难度就越高。

    但是越复杂的算法所消耗的资源也就越高,基于网络发送所占据的数据也就越大。

    因此要使用什么算法需要看具体的需求(一般来说md5就足够了)。

 

 

  密码存储

    在涉及到用户的密码存储时,存储的都是密文,即使是内部程序员也无法得知明文内容。

    这样的做法是为了用户信息的安全性。

 

 

  加盐处理

    加盐处理指的是在给明文数据在加密处理过程前添加一些干扰项。

    为了更加的安全有时会添加动态的值,这种方式被称为动态加盐。

 

 

 

 

  校验文件一致性

    当需要比对文件是否一致时,可以将文件的密文进行比对,当密文一致时表示文件内容一致。

    当文件特别大时,全部加密处理会相当耗时耗资源。

    针对大文件可以采取切片操作的方式。

 

 

 

logging模块

  日志等级   

    日志有五个等级(从上往下重要程度不一样)
      1.logging.debug('debug级别') # 10
      2.logging.info('info级别') # 20
      3.logging.warning('warning级别') # 30
      4.logging.error('error级别') # 40
      5.logging.critical('critical级别') # 50

    默认记录的级别为30及以上

  详细介绍

    1..logger对象:负责产生日志。

logger = logging.getLogger('')

    2.filter对象:负责过滤日志(忽略)。

    3.handlier对象:负责日志产生的位置。

hd1 = logging.FileHandler('文件名',encoding='utf8')  # 产生到文件
hd2 = logging.StreamHandler()  # 产生在终端

    4.formatter对象:负责日志的格式。

fm = logging.Formatter(
    fmt='%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s',
    datefmt='%Y-%m-%d %H:%M:%S %p',
)

    5.绑定handler对象

logger.addHandler(hd1)

    6.绑定formatter对象

hd1.setFormatter(fm)

    7.设置日志等级

logger.setLevel(30)

    8.记录日志

logger.debug('日志内容 ')

  配置字典

    字典的配置,复制改一下就行

复制代码
import logging
import logging.config

standard_format = '[%(asctime)s][%(threadName)s:%(thread)d][task_id:%(name)s][%(filename)s:%(lineno)d]' \
                  '[%(levelname)s][%(message)s]' #其中name为getlogger指定的名字

simple_format = '[%(levelname)s][%(asctime)s][%(filename)s:%(lineno)d]%(message)s'

logfile_path = 'a3.log'
# log配置字典
LOGGING_DIC = {
    'version': 1,
    'disable_existing_loggers': False,
    'formatters': {
        'standard': {
            'format': standard_format
        },
        'simple': {
            'format': simple_format
        },
    },
    'filters': {},  # 过滤日志
    'handlers': {
        #打印到终端的日志
        'console': {
            'level': 'DEBUG',
            'class': 'logging.StreamHandler',  # 打印到屏幕
            'formatter': 'simple'
        },
        #打印到文件的日志,收集info及以上的日志
        'default': {
            'level': 'DEBUG',
            'class': 'logging.handlers.RotatingFileHandler',  # 保存到文件
            'formatter': 'standard',
            'filename': logfile_path,  # 日志文件
            'maxBytes': 1024*1024*5,  # 日志大小 5M
            'backupCount': 5,
            'encoding': 'utf-8',  # 日志文件的编码,再也不用担心中文log乱码了
        },
    },
    'loggers': {
        #logging.getLogger(__name__)拿到的logger配置  空字符串作为键 能够兼容所有的日志
        '': {
            'handlers': ['default', 'console'],  # 这里把上面定义的两个handler都加上,即log数据既写入文件又打印到屏幕
            'level': 'DEBUG',
            'propagate': True,  # 向上(更高level的logger)传递
        },  # 当键不存在的情况下 (key设为空字符串)默认都会使用该k:v配置
    },
}


# 使用配置字典
logging.config.dictConfig(LOGGING_DIC)  # 自动加载字典中的配置
logger1 = logging.getLogger('xxx')
logger1.debug('日志内容')
logging字典
复制代码

 

 

第三方模块

  第三方模块并不是python自带的,需要自行从网络下载。

  下载方式

    方式1:通过命令行借助pip工具下载(需先将pip添加到环境变量)。

      pip3 install 模块名  # 下载最新版本模块

      pip3 install 模块名==版本名  # 下载对应版本

      pip3 install 模块名 -i 仓库地址  # 更换地址下载

    方式2:pycharm快捷下载

      settings

        project

          python interprter

            双击或点击加号可下载

      点击下方manage管理原地址可以更改下载地址

 

 

  可下载的地址

    pip命令默认下载的渠道是国外的python官网(有时候会非常的慢)
    我们可以切换下载的源(仓库)
    (1)阿里云 http://mirrors.aliyun.com/pypi/simple/
    (2)豆瓣 http://pypi.douban.com/simple/
    (3)清华大学 https://pypi.tuna.tsinghua.edu.cn/simple/
    (4)中国科学技术大学 http://pypi.mirrors.ustc.edu.cn/simple/
    (5)华中科技大学http://pypi.hustunique.com/

posted @   临江沂水  阅读(49)  评论(0编辑  收藏  举报
编辑推荐:
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通
点击右上角即可分享
微信分享提示