zoukankan      html  css  js  c++  java
  • python技巧总结之set、日志、rsa加密

    一、日志模块logging模块调用

    1、日志模块使用原理

    #!/usr/bin/python
    # -*- coding:utf-8 -*-
    
    import logging
    
    # 方式一:
    """
    logging.basicConfig(filename='log1.log',
                        format='%(asctime)s - %(name)s - %(levelname)s -%(module)s:  %(message)s',
                        datefmt='%Y-%m-%d %H:%M:%S %p',
                        level=10)
    
    logging.info('info,asdfasdfasdfasdf')
    logging.error('error,asdfasdfasdf')
    """
    
    # 方式二:
    
    file_handler = logging.FileHandler('xxxxxxxx.log', 'a', encoding='utf-8')
    file_handler.setFormatter(logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s:  %(message)s"))
    
    logger = logging.Logger('s1', level=logging.INFO)
    logger.addHandler(file_handler)
    
    logger.info('1111')
    logger.error('2222')
    

     2、日志模块封装使用

    import logging
    from config import settings
    
    class Logger(object):
        def __init__(self):
            self.log_file_path = settings.LOG_FILE_PATH
            file_handler = logging.FileHandler(self.log_file_path, 'a', encoding='utf-8')
            file_handler.setFormatter(logging.Formatter(fmt="%(asctime)s - %(name)s - %(levelname)s:  %(message)s"))
    
            self.logger = logging.Logger('cmdb', level=logging.INFO)
            self.logger.addHandler(file_handler)
    
        def info(self,msg):
            self.logger.info(msg)
        def error(self,msg):
            self.logger.error(msg)
    
    
    logger = Logger()
    

     二、set并集交集的使用

    1》交集
    >>> x={1,2,3,4}
    >>> y={3,4,5,6}
    >>> x
    set([1, 2, 3, 4])
    >>> y
    set([3, 4, 5, 6])
    >>> x&y
    set([3, 4])
    >>> x.intersection(y)
    set([3, 4])
    2》并集
    >>> x | y #集合并集
    set([1, 2, 3, 4, 5, 6])
    >>> x.union(y)
    set([1, 2, 3, 4, 5, 6])
    3》差集
    >>> x-y # x与y的差集
    set([1, 2])
    >>> x.difference(y)# x与y的差集
    set([1, 2])
    >>> y-x # y与x的差集
    set([5, 6])
    >>> y.difference(x)# y与x的差集
    set([5, 6])
    4》对称差集
    >>> x^y
    set([1, 2, 5, 6])
    >>> y^x
    set([1, 2, 5, 6])
    >>> x.symmetric_difference(y)
    set([1, 2, 5, 6])
    >>> y.symmetric_difference(x)
    set([1, 2, 5, 6])
    5》集合的子集和超集
    >>> x
    set([1, 2, 3, 4])
    >>> z
    set([1, 2, 3])
    >>> z.issubset(x)#z是x的子集
    True
    >>> x.issuperset(z)#x是z的超集
    
    True
    

      三、rsa加密

    """
    pip3 install rsa
    asdf
    """
    import rsa
    import base64
     
    
    # ######### 1. 生成公钥私钥 #########
    pub_key_obj, priv_key_obj = rsa.newkeys(1024) # 128 - 11 = 117
    # 公钥字符串
    pub_key_str = pub_key_obj.save_pkcs1()
    pub_key_code = base64.standard_b64encode(pub_key_str)
    print(pub_key_code)
    # 私钥字符串
    priv_key_str = priv_key_obj.save_pkcs1()
    priv_key_code = base64.standard_b64encode(priv_key_str)
    print(priv_key_code)
    
    
    
    # # ######### 2. 加密 #########
    def encrypt(pub_key_code,value):
        key_str = base64.standard_b64decode(pub_key_code)
        pk = rsa.PublicKey.load_pkcs1(key_str)
        result = rsa.encrypt(value.encode('utf-8'), pk)
        return result
    
    data = encrypt(pub_key_code,'zff')
    print(len(data),data)
    
    # # ######### 3. 解密 #########
    def decrypt(priv_key_code,value):
        key_str = base64.standard_b64decode(priv_key_code)
        pk = rsa.PrivateKey.load_pkcs1(key_str)
        val = rsa.decrypt(value, pk)
        return val
    
    origin = decrypt(priv_key_code,data)
    print(origin)
    #
    # # ######### 基本使用 #########
    # if __name__ == '__main__':
    #     v = 'wangshuyang'
    #     v1 = encrypt(v)
    #     print(v1)
    #     v2 = decrypt(v1)
    #     print(v2)
    

      

  • 相关阅读:
    Spring_IOC理论推导
    第一个Mybatis及运行问题分析
    Spring_简介
    ECharts_雷达图
    ECharts_饼图
    ECharts_直角坐标系的常用配置
    ECharts_散点图
    ECharts_折线图
    util之日期工具类
    util之Json工具类
  • 原文地址:https://www.cnblogs.com/wangshuyang/p/9835750.html
Copyright © 2011-2022 走看看