包的使用及其它模块
Posted panshao51km-cn
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了包的使用及其它模块相关的知识,希望对你有一定的参考价值。
一、包
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‘)
以上是关于包的使用及其它模块的主要内容,如果未能解决你的问题,请参考以下文章