包 logging模块 hashlib模块 openpyxl 深浅拷贝

模块的来源:内置,第三方,自定义

包:一系列文件的结合体, 表示形式是一个文件夹, 该文件夹内部有一个__init__.py文件, 包的本质就是一个模块.

  首次导入包:

      先产生一个执行文件的名称空间

            1.创建包下面的__init__.py文件的名称空间

            2.执行包下面的__init__.py文件的代码, 将产生的名字放入包下面的__init__.py文件名称空间中

     3.在执行文件中拿到一个指向包下面的__init__.py文件名称空间的名字

在导入语句中点号左侧是一个包

python2如果要导入包, 包下面必须有__init__.py文件

python3如果导入包, 包下面没有__init__.py文件也不会报错

1.logger对象:负责产生日志
2.filter对象:过滤日志(了解)
3.handler对象:控制日志输出的位置(文件/终端)
4.formmater对象:规定日志内容的格式

import logging
# logger 对象:负责产生日志
logger = logging.getLogger('转账记录')  
# filter对象 : 过滤日志
# handler对象: 控制日志输出的位置(文件/终端)
hd1 = logging.FileHandler('a1.log',encoding='utf-8')  # 输出到文件中
hd2 = logging.FileHandler('a2.log',encoding='utf-8')
hd3 = logging.StreamHandler()  # 输出到终端
# Formatter对象:规定日志内容的格式
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',)
# 给logger对象绑定handler对象
logger.addHandler(hd1)
logger.addHandler(hd2)
logger.addHandler(hd3)
# 给handler绑定formatter对象
hd1.setFormatter(fm1)
hd2.setFormatter(fm2)
hd3.setFormatter(fm1)
# 设置日志等级
logger.setLevel(10)
# 记录日志
logger.debug('写了半天 好累啊 好热啊 好想释放')
import logging  
logging.debug('debug message')  
logging.info('info message')  
logging.warning('warning message')  
logging.error('error message')  
logging.critical('critical message') 

日志级别等级CRITICAL > ERROR > WARNING > INFO > DEBUG

hashlib 模块

import hashlib  #加密之后无法解密
md = hashlib.sha3_256()  #生成一个可以制造密文的对象
md.update(b'jason')  # 往对象里传明文数据  update只能接受byte类型
print(md.hexdigest())  # 获取明文数据对应的密文

不同的算法,使用方法相同,密文长度越长,内部算法越复杂,但是时间消耗越长,占用空间越大,通常情况下,使用md5算法.

# 传入的内容可以分多次传入,只要传入的内容相同 那么生成的密文肯定相同.

import hashlib
md = hashlib.md5()   
md.update(b'oldboy.com')  #加盐处理
md.update(b'hello')   # 真正的内容
print(md.hexdigest())

openpyxl   操作excel表格的模块

  03版本之前 excel文件的后缀名 叫xls
  03版本之后 excel文件的后缀名 叫xlsx

  xlwd  写excel    xlrt  读excel

  xlwd和xlrt既支持03版本之前的excel文件也支持03版本之后的excel文件
  openpyxl 只支持03版本之后的  xlsx

from openpyxl import Workbook
wb = Workbook()  # 生成一个工作簿
wb1 = wb.create_sheet('index',0)  # 生成一个excel工作表,后面的数字是用来控制位置
wb2 = wb.create_sheet('index1')
wb1.title = 'login'  # 修改excel工作表的名称
wb.save('test.xlsx')  #保存新建的excel文件
import copy
l = [1,2,[1,2]]
l2 = copy.copy(l)   # 浅拷贝 只会拷贝第一层, 第二层可变类型还会指向原来的数据 
print(id(l),id(l2))  # 2183904323400    2183904324680
l[0] = 222
print(l,l2)   # [222, 2, [1, 2]]      [1, 2, [1, 2]]
l[2].append(666)
print(l,l2)  # [222, 2, [1, 2, 666]]      [1, 2, [1, 2, 666]]
l3 = copy.deepcopy(l)  # 深拷贝  
l[2].append(777)
l[0] = 12
print(l,l3)  # [12, 2, [1, 2, 666, 777]]    [222, 2, [1, 2, 666]]
dayehui
原文地址:https://www.cnblogs.com/zrh-960906/p/11217663.html