一、包
1.什么是包?
他是一系列文件的结合体,表示形式就是一个文件夹,该文件夹内部通常会有一个__init__.py文件,创建包的目的不是为了运行,而是被导入使用,包只是一种形式而已,包的本质就是一种模块。
2.包的作用?
包的本质就是一个文件夹,那么文件夹唯一的功能就是将文件组织起来,随着功能越写越多,我们无法将所有的功能都放在一个文件夹中,于是我们用模块去组织功能,随着模块越来越多,我们就需要用文件将模块文件组织起来,来提高程序的结构性和可维护性。
3.怎么样导入包?
首次导入包,先产生一个执行文件的名称空间:1.创建包下面的__init__.py文件的名称空间.
2.执行包下面的__init__.py文件中的代码,将产生的名字放入包下面的__init__,py文件名称空间中.
3.在执行文件中拿到一个指向包下面的__init__.py文件名称的名称空间.
二、日志模块
logging.getLogger([name]):返回一个logger对象,如果没有指定名字将返回root logger.
logging.debug()、logging.info()、logging.warning()、logging.error()、logging.critical():设定root logger的日志级别
logger:logger.setlevel(logging.warning):指定最低日志级别,低于warning将被忽略。
logger.addfilter(filt)、logger.removefilter(filt):添加或删除指定的filter。
logger.addhandler(hdlr)、logger.removehandler(hdlr):增加或删除指定的handler。
Handlers:handler对象负责发送相关的信息到指定的目的地。可以是文件、屏幕、网络等。
handler.setlevel(lel):指定被处理的信息级别,低于lel级别的信息将被忽略。
handler.setformatter():给handler选择一个输出格式
handler.addfilter(filt)、handler.removefilter(filt):新增或删除一个filter对象
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('写了半天 好累啊 好热啊 好想释放')
三、hashlib模块
hashlib主要提供字符加密功能,将md5和sha模块整合到了一起,支持md5,sha1, sha224, sha256, sha384, sha512等算法。
import hashlib # 这个加密的过程是无法解密的
md = hashlib.sha3_256() # 生成一个帮你造密文的对象
md.update('hello'.encode('utf-8')) # 往对象里传明文数据 update只能接受bytes类型的数据
md.update(b'Jason_@.') # 往对象里传明文数据 update只能接受bytes类型的数据
print(md.hexdigest()) # 获取明文数据对应的密文
注意:hashlib 加密的字符串类型为二进制编码,如果数据量大,可以分块多次调用update()
import hashlib
# 传入的内容 可以分多次传入 只要传入的内容相同 那么生成的密文肯定相同
md = hashlib.md5()
md.update(b'areyouok?')
md.update(b'are')
md.update(b'you')
md.update(b'ok?')
print(md.hexdigest()) # 408ac8c66b1e988ee8e2862edea06cc7
408ac8c66b1e988ee8e2862edea06cc7
四、openpyxl模块
openpyxl是近几年比较火的操作excel表格的模块。在openpyxl中,主要用到三个概念:Workbooks,Sheets,Cells。Workbook就是一个excel工作表;Sheet是工作表中的一张表页;Cell就是简单的一个格。
导入模块
from openpyxl import Workbook
wb = Workbook() #生成一个工作簿
wb1 = wb.create_sheet('index',0) #创建一个表单页,后面可以通过数字来控制位置
wb2 = wb.create_sheet('index1')
wb1.title = 'login' #后期可以通过表单页对象点title来修改表单名字
from openpyxl import Workbook
wb1['A3'] = 111 # 在表中的第一列的第三行添加“111”
wb1.cell(row = 6,column = 3,value = 100) # 在第三行的第六列添加100
wb1.['A5'] = '=sum(A3:A4)' # 第一列的第五行是第一列的第三行和第四行之和
wb.save('text.xlsx')