包的使用及其它模块

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‘)

  

  

  

 

以上是关于包的使用及其它模块的主要内容,如果未能解决你的问题,请参考以下文章

python中import或from使用及模块和包的使用总结

Node.js 模块加载及包的管理

运用Python模块和包

nodejs中标准包的制作,上传,安装及卸载方法

条件循环及其它语句

Python之模块及包的导入