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()
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
"""
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)
原文:https://www.cnblogs.com/wangshuyang/p/9835750.html