zoukankan      html  css  js  c++  java
  • 包 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
  • 相关阅读:
    C++中整型变量的存储大小和范围
    A1038 Recover the Smallest Number (30 分)
    A1067 Sort with Swap(0, i) (25 分)
    A1037 Magic Coupon (25 分)
    A1033 To Fill or Not to Fill (25 分)
    A1070 Mooncake (25 分)
    js 获取控件
    C#代码对SQL数据库添加表或者视图
    JS 动态操作表格
    jQuery取得下拉框选择的文本与值
  • 原文地址:https://www.cnblogs.com/zrh-960906/p/11217663.html
Copyright © 2011-2022 走看看