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
  • 相关阅读:
    运算符重载
    vmware 下 ubuntu 不能全屏显示 的解决方法
    最优化
    常见算法(logistic回归,随机森林,GBDT和xgboost)
    转:CRF++词性标注
    条件随机场(CRF)理论及应用
    转:RNN(Recurrent Neural Networks)
    RNN(Recurrent Neural Networks)公式推导和实现
    ML、DL相关资源
    机器学习(周志华西瓜书) 参考答案 总目录
  • 原文地址:https://www.cnblogs.com/zrh-960906/p/11217663.html
Copyright © 2011-2022 走看看