1.hashlib模块 #hashlib模块:摘要算法,它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示) ##hashlib模块的应用 ###加密 import hashlib md5_obj = hashlib.md5() # 选择了md5算法,sha算法的使用类似
s = input('>>>') md5_obj.update(s.encode('utf-8')) #以s做盐进行加密,提高安全性 print(md5_obj.hexdigest()) #打印摘要

hashlib加密的特点: 1.使用相同的算法对同一个字符串进行摘要在任意时刻 任意平台 任意语言结果总是不变的 2.这个摘要过程不可逆 3.对于不同的数据的计算结果总是不同的

###校验文件一致性 import os import hashlib def get_md5(file,n = 10240): with open(file, 'rb') as f1: md5_obj = hashlib.md5() file_size = os.path.getsize(file) while file_size>0: md5_obj.update(f1.read(n)) file_size -= n return md5_obj.hexdigest()

def compare(file1,file2): return get_md5(file1) == get_md5(file2)

2.configparser模块 #configparser模块:设置配置文件 import configparser

config = configparser.ConfigParser()

config["DEFAULT"] = {'ServerAliveInterval': '45', 'Compression': 'yes', 'CompressionLevel': '9', 'ForwardX11':'yes' }

config['bitbucket.org'] = {'User':'hg'}

config['topsecret.server.com'] = {'Host Port':'50022','ForwardX11':'no'}

with open('example.ini', 'w') as configfile:

config.write(configfile)

产生了一个example.ini文件,内容如下: [DEFAULT] ServerAliveInterval = 45 Compression = yes CompressionLevel = 9 ForwardX11 = yes

[bitbucket.org] User = hg

[topsecret.server.com] Port = 50022 ForwardX11 = no #可通过代码对文件进行增删查改操作,和操作字典方法类似

3.logging模块 #logging模块:日志格式的模块 ##简单配置方式 import logging logging.debug('debug message') # 调试模式 logging.info('info message') # 基础正常的信息 logging.warning('warning message') # 警告信息 logging.error('error message') # 错误信息 logging.critical('critical message') # 批判的 严重错误

logging.basicConfig(level=logging.DEBUG, format='%(asctime)s %(filename)s[line:%(lineno)d] %(levelname)s %(message)s', datefmt='%a, %d %b %Y %H:%M:%S', filename='test.log', filemode='a')

##logger对象的配置方式 *# 创建一个logger对象 创建一个屏幕管理对象 创建一个文件管理对象 创建一个格式对象

屏幕管理对象 + 一个格式对象 文件管理对象 + 一个格式对象

logger对象* 屏幕管理对象 文件管理对象

logger = logging.getLogger() # 创建一个logger对象
sh = logging.StreamHandler() # 创建一个屏幕管理对象 fh = logging.FileHandler('test2.log',encoding='utf-8') # 创建一个文件管理对象 fomatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s') # 创建一个格式对象

sh.setFormatter(fomatter) # 屏幕管理对象 + 一个格式对象 fh.setFormatter(fomatter) # 文件管理对象 + 一个格式对象 sh.setLevel(logging.WARNING) #屏幕管理对象的输出级别 fh.setLevel(logging.INFO) # 文件管理对象的输出级别

logger.addHandler(sh) #logger对象+屏幕管理对象 logger.addHandler(fh) #logger对象+文件管理对象 logger.setLevel(logging.DEBUG)

logger.debug('你好') # 调试模式 logger.info('info message') # 基础正常的信息 logger.warning('warning message') # 警告信息 logger.error('error message') # 错误信息 logger.critical('critical message') # 批判的 严重错误

4.序列化模块 #将数据结构转换成字符串是序列化,将字符串转换成数据结构是反序列化。序列化主要是为了文件存储和网络传输。相关的模块有json pickle shelve import json lst = [1,2,3,'bbb'] dic = {'a':1,2:3} ret1= json.dumps(lst) #dumps将数据类型转字符串 print(ret1,type(ret1)) ret2= json.dumps(dic) print(ret2,type(ret2))

res1 = json.loads(ret1) #loads反序列化过程 res2= json.loads(ret2) print(res1,type(res1)) print(ret2,type(res2)) ##json 只支持有限的数据类型 字典 列表 数字类型
f = open('json_file','w') json.dump([1,2,3],f) #dump操作和文件相关 f.close()

f = open('json_file','r') content = json.load(f) #load操作和文件相关 f.close()

#pickle和json用法类似,pickle只支持python,几乎支持所有数据类型。json所有的语言都通用,支持的数据类型有限