标签:word copy 单元格 过滤 步骤 md5算法 exce hand 单元
import logging logging.debug(‘调试debug‘)? logging.info(‘消息info‘) logging.warning(‘警告warn‘) logging.error(‘错误error‘) logging.critical(‘严重critical‘) ? ‘‘‘打印结果 WARNING:root:警告warn ERROR:root:错误error CRITICAL:root:严重critical ‘‘‘
import logging logging.basicConfig(filename=‘access.log‘, format=‘%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s‘, datefmt=‘%Y-%m-%d %H:%M:%S %p‘, level=30, ) ? logging.debug(‘debug日志‘) # 10 logging.info(‘info日志‘) # 20 logging.warning(‘warning日志‘) # 30 logging.error(‘error日志‘) # 40 logging.critical(‘critical日志‘) # 50
1.logger对象:负责产生日志 2.filter对象:过滤日志(了解) 3.handler对象:控制日志输出的位置(文件/终端) 4.formmater对象:规定日志内容的格式
import logging ? # 1.logger对象:负责产生日志 logger = logging.getLogger(‘转账记录‘) ? # 2.filter对象:过滤日志(了解) ? # 3.handler对象:控制日志输出的位置(文件/终端) hd1 = logging.FileHandler(‘a1.log‘,encoding=‘utf-8‘) # 输出到文件中 hd2 = logging.FileHandler(‘a2.log‘,encoding=‘utf-8‘) # 输出到文件中 hd3 = logging.StreamHandler() # 输出到终端 ? # 4.formmater对象:规定日志内容的格式 fm1 = logging.Formatter( fmt=‘%(asctime)s - %(name)s - %(levelname)s -%(module)s: %(message)s‘, datefmt=‘%Y-%m-%d %H:%M:%S %p‘, ) fm2 = logging.Formatter( fmt=‘%(asctime)s - %(name)s: %(message)s‘, datefmt=‘%Y-%m-%d‘, ) ? # 5.给logger对象绑定handler对象 logger.addHandler(hd1) logger.addHandler(hd2) logger.addHandler(hd3) ? # 6.给handler绑定formmate对象 hd1.setFormatter(fm1) hd2.setFormatter(fm2) hd3.setFormatter(fm1) ? # 7.设置日志等级 logger.setLevel(20) ? # 8.记录日志 logger.debug(‘写了半天 好累啊 好热啊 好想释放‘)
1、只要传入的内容一样,得到的hash值必然一样=====>要用明文传输密码文件完整性校验 2、不能由hash值返解成内容=======》把密码做成hash值,不应该在网络传输明文密码 3、只要使用的hash算法不变,无论校验的内容有多大,得到的hash值长度是固定的
1.不同的算法 使用方法是相同的 密文的长度越长 内部对应的算法越复杂 但是 1.时间消耗越长 2.占用空间更大 通常情况下使用md5算法 就可以足够了
# 加盐处理 # import hashlib # # md = hashlib.md5() # # 公司自己在每一个需要加密的数据之前 先手动添加一些内容 # md.update(b‘oldboy.com‘) # 加盐处理 # md.update(b‘hello‘) # 真正的内容 # print(md.hexdigest()) # 返回摘要,作为十六进制数据字符串值
import hashlib def get_md5(data): md = hashlib.md5() md.update(‘加盐‘.encode(‘utf-8‘)) md.update(data.encode(‘utf-8‘)) return md.hexdigest() password = input(‘password>>>:‘) res = get_md5(password) print(res)
pip install openpyxl
from openpyxl import Workbook # 实例化 wb = Workbook() # 激活 worksheet ws = wb.active
>>> from openpyxl import load_workbook >>> wb2 = load_workbook(‘文件名称.xlsx‘)
# 方式一:数据可以直接分配到单元格中(可以输入公式) ws[‘A1‘] = 42 # 方式二:可以附加行,从第一列开始附加(从最下方空白处,最左开始)(可以输入多行) ws.append([1, 2, 3]) # 方式三:Python 类型会被自动转换 ws[‘A3‘] = datetime.datetime.now().strftime("%Y-%m-%d")
# 方式一:插入到最后(default) >>> ws1 = wb.create_sheet("Mysheet") # 方式二:插入到最开始的位置,第二个参数是索引号 >>> ws2 = wb.create_sheet("Mysheet", 0)
# sheet 名称可以作为 key 进行索引 >>> ws3 = wb["New Title"] >>> ws4 = wb.get_sheet_by_name("New Title") >>> ws is ws3 is ws4 True
# 显示所有表名 >>> print(wb.sheetnames) [‘Sheet2‘, ‘New Title‘, ‘Sheet1‘] # 遍历所有表 >>> for sheet in wb: ... print(sheet.title)
# 方法一 >>> c = ws[‘A4‘] # 方法二:row 行;column 列 >>> d = ws.cell(row=4, column=2, value=10) # 方法三:只要访问就创建 >>> for i in range(1,101): ... for j in range(1,101): ... ws.cell(row=i, column=j)
>>> wb.save(‘文件名称.xlsx‘)
# 方式一 wb.remove(sheet) # 方式二 del wb[sheet]
标签:word copy 单元格 过滤 步骤 md5算法 exce hand 单元
原文地址:https://www.cnblogs.com/buzaiyicheng/p/11216158.html