包的概念
'''''' ''' 什么是包? 它是一系列模块的结合体,就是个文件夹,本质就是模块 该文件夹中应该有__init__文件 首次导入包 会运行执行文件的代码 创建执行文件的名称空间 1.创建包下面的__init__文件的名称空间 2.执行__init__文件,执行__init__文件的代码,把产生的名字放入创建的名称空间中 3.在执行文件中会有一个连接__init__名称空间的名字 在导入语句中.号左边的肯定是文件夹(包) 对包的理解我们要站在两个角度看 1.站在包的开发者来看 当模块特多时,我们需要分文件夹管理 为了防止模块所在文件夹后期改名的问题 包里面的模块在相互导入的时候统一使用相对导入 2.站在包的使用者来看 你使用包时需要将包所在文件夹的绝对路径添加到环境变量中 在python2 中包的文件夹下必须有__init__文件 在python3 中包的文件夹下不一定要有__init__文件 不能随意删除__init__文件 ''' ''' __init__文件就是将模块全部导入进__init__文件 '''
hashlib模块
# hashlib 加密模块 import hashlib # 加密之后无法解密 md = hashlib.md5() # 帮你生成一个加密对象 md.update('world'.encode('utf-8')) # 往里面传入明文数据 update只能接收bytes类型数据 md.update('dsb'.encode('utf-8')) # 可以对一个加密对象多次传入明文数据 # print(md.hexdigest()) # 获得明文数据对应的密文 md1 = hashlib.md5() md1.update('中'.encode('utf-8')) # print(md1.hexdigest()) # 传入内容过多时,可以分次传入 相同内容被多次传入和被一次传入得到的密文相同 md2 = hashlib.sha1() md2.update(b'hello') md2.update(b'world') # print(md2.hexdigest()) # 6adfb183a4a2c94a2f92dab5ade762a47889a5a1 md3 = hashlib.sha1() md3.update(b'helloworld') # print(md3.hexdigest()) # 6adfb183a4a2c94a2f92dab5ade762a47889a5a1 ''' hashlib模块应用场景 1.加密密码 2.检验文件是否一致 ''' # 加盐处理 # 就是给输入的密码在进行加密处理前 给他加上一些新内容 再进行加密处理 # 动态加盐 # 动态加盐可以将用户名和密码拼接在一起进行加密处理
openpyxl模块
# openpyxl 操作excel的模块 ''' 03 版本之前excel的后缀名为xls 03 版本之后excel的后缀名为xlsx ''' # 还有两个模块可以操作excel # xlwd xlrt # xlwd 写excel # xlrt 读excel # xlwd和xlrt既支持03版本之前的excel也支持03版本之后的excel # openpyxl只支持03版本之后的excel # 写 ''' from openpyxl import Workbook wb = Workbook() # 生成一个工作簿 wb1 = wb.create_sheet('index') # 添加一个列表 wb1.title = 'name' # 后期修改列表名 wb1['A3'] = 11 wb1['A4'] = 19 wb1.cell(row=8,column=9,value=0) # 在第8行 第9列 添加值0 wb1['B3'] = '=sum(A3:A4)' # 在B3添加A3,A4的和 wb1.append(['username','age','hobby']) wb1.append(['jason',18,'study']) wb1.append(['tank',72,'吃生蚝']) wb1.append(['egon',84,'女教练']) wb1.append(['sean',23,'会所']) wb1.append(['nick',28,]) wb1.append(['nick','','秃头']) # 保存新建的excel wb.save('index') ''' # 读 from openpyxl import load_workbook wb = load_workbook('index.xlsx',read_only=True,data_only=True) print(wb.sheetnames) # 读出excel文件中有几个表格,以列表的形式返回 print(wb['name']['A3'].value) # 如果要读取空的单元格 直接报错 print(wb['name']['B3'].value) # 通过代码产生的excel表格必须经过人为操作之后才能读取出函数计算出来的结果值 res = wb['name'] print(res) for i in res: for j in i: print(j.value)