python_day14_常用模块

HASH 常被称为散列

通过一种将任意长度的消息压缩到某一固定长度的消息摘要的函数
HASH主要用于信息安全领域中的加密算法。把一些不同长度的信息转化成杂乱的128位编码,叫做HASH值, 也可以说hash就是找到一种数据内容和数据存放地址之间的映射关系

MD5

  • md5讯息摘要演算法,一种被广泛使用的密码杂凑函数,可以产生一个128位散列值,用于确保信息传输完整一致。
  • 特点1、 压缩性:任意长度算出的md5 都是固定长度
    2.、容易计算: 可以很快算出md5值
    3 、抗修改性: 源数据改动md5 区别会很大
    4、抗碰撞性:很难得到相同的md5

  • md5 不可逆性、无法反推
  • 防止被篡改
    防止看到明文
    防止抵赖

subprocess 命令执行

  • subprocess.run(‘df -h’,stdout=subprocess.PIPE,stderr=subprocess.PIPE,shell=True)
  • subprocess.all() 执行命令, 返回执行状态0 or 非0
  • subprocess.check_call()执行命令,结果为0 正常返回,否则抛出异常
  • subprocess.getstatusoutput()接受字符串格式明亮,返回元组形式,返回结果第一个为执行状态,第二个为命令结果
  • subprocess.getoutput() 接收字符串格式明亮,并返回结果
  • res = subprocess.check_output() 执行命令,返回结果给res,不打印,返回结果不为0 报错

Popen() 方法
subprocess.run(‘sleep 10’,shell=True,stdout=subprocess.PIPE) # run方法执行结束之后,开始新的进程
subprocess.Popen(‘sleep 10’,shell=True,stdout=subprocess.PIPE) # Popen新的进程, 不影响当前进程
subprocess.Popen(‘sleep 10’,shell=True,stdout=subprocess.PIPE,preexee=函数名) #可以调用函数只有在unix系统下有
subprocess.Popen(‘sleep 10’,shell=True,cwd="/root",stdout=subprocess.PIPE) # cwd可设置运行根目录

  • a = subprocess.Popen(‘sleep 10’,shell=True,cwd="/root",stdout=subprocess.PIPE)

a.poll() # 返回结果
a.wait() # 等待sleep 时间
a.terminate() # 终止进程
a.communicate() 已启动的进程交互,只能一次交互,出现多次交互会报错
a.send_signal(signal.SIGKILL) # 给进程发送信号, 需要提前导入signal包

logging 日志模块

  • 存储各种格式的日志,logging的日志可以分为调试模式debug(),记录模式info(),警告warning(),报错error().严重问题critical() 5个级别

import logging
logging.warning(‘user [cobitry] attempted wrong password more than 3 times’)
loging.critical(‘server is down’)

  • logging.basicConfig(filename=“file_name”,level=logging.INFO) 写入文件、只记录INFO或跟高级别的数据
  • logging.basicConfig(format="%(asctime)s%(message)s",datefmt="%m-%d-%Y:S %p")

format= 的各种参数
%(levelname)s ## 日志级别文本形式
%(levelno)s ## 数字形式日志级别
%(pathname)s## 调用日志输出函数的模块的完整路径名
%(filename)s## 调用日志输出函数的模块的文件名
%(modules)s## 滴啊用日志输出的函数的模块名
%(funcName)s## 调用日志输出函数的函数名
%(lineno)d## 调用日志输出函数的语句所在的代码行
%(created)f ## 当前时间, 用unix标砖的表示时间的浮点表示
%(relativeCreated)d ## 输出日志信息时的,自Logger创建以来的毫秒数
%(asctime)s ## 字符船行驶的当前时间。默认格式:2018-0-0 0:0:0,1234 逗号后面为毫秒
%(thread)d ## 线程ID
%(threadName)s ##线程名
%(process)d ## 进程ID 可能没有
%(message)s## 用户输出消息

  • 日志同时输出都屏幕和文件

四个主要的类
+ logger 提供应用程序可以直接使用的接口
+ handler 将logger创建的日志记录发送到合适的目的输出
+ fitter 提供细度设备来约定输出哪条日志记录
+ formatter决定日志记录的最终输出格式
+ 1.生成logger对象
# logger = logging.getLogger(‘web’)
+ 2.生成handler对象
# ch = logging.StreamHandler()
# ch.setLevel(logging.DEBUG)
# fh = logging.FileHandler()
# fh.setLevel(logging.warning)
+ 2.1 吧handler对象绑定到logger
# logger.addHandler(ch)
# logger.addHandler(fh)
+ 3.生成formatter对象
# 输出到控制台console = logging.Formatter(’%(asctime)s - %(name)s’)
#输出到文件 file = logging.Formatter(’%(asctime)s - %(name)s’)
+ 3.1把formatter对象绑定到handler
# ch.setFormatter(console)
# fh.setFormatter(file)
+ logger.debug()
+ logger.warning()

  • 日志过滤

  • 日志截断 from logging import handlers

handlers.RotatingFileHandler
RotatingFileHandler(filename, mode=‘a’, maxBytes=0, backupCount=0, encoding=None, delay=False)
handlers.TimedRotatingFileHandler
TimedRotatingFileHandler(filename, when=‘h’, interval=1, backupCount=0, encoding=None, delay=False, utc=False, atTime=None)

你可能感兴趣的:(学习笔记)