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)