python第九天学习总结
admin
2023-07-24 05:22:23
0

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所有的语言都通用,支持的数据类型有限

相关内容

热门资讯

四川凉山一幼儿园雇“黑校车”超... 澎湃新闻记者 熊强近日,四川凉山州越西县公安交警查处1起危险驾驶的犯罪行为,当地一幼儿园雇佣一辆“黑...
女子乘火车卧铺被占,争吵中手腕... 近日,江苏的李女士称自己乘坐北京开往上海的列车出行,刚上火车就发现自己的卧铺被一位大妈占了,争吵中被...
一票之差通过战争权力表决,特朗... 作者:艾文2026年6月23日夜,美国参议院以50票赞成、48票反对,通过了一项要求特朗普结束对伊朗...
飞上天的储油罐,不仅仅是普京的... 【文/观察者网专栏作者 张仲麟】对俄罗斯来说,2026年上半年显然无比美好。特朗普贸然发动的“史诗狂...
以总统搭乘的直升机,紧急迫降 据《以色列时报》报道,以色列总统赫尔佐格搭乘的一架以空军直升机当地时间25日撞上鸟群后紧急迫降。报道...
欧盟急着甩开中美,拿“更有利”... 【文/观察者网 王一】中国在关键矿产领域的主导地位、美国疯狂在全球找矿的动作,都让欧盟坐不住,转头找...
中产最烧钱的户外运动:种地 作者/闫如意 编辑/章鱼一个都市人最大的privilege是什么?不是豪车、豪宅、学霸小孩。而是好腰...
跟随总书记走进田间 感受智慧“... 6月24日,习近平总书记在山东省德州市考察期间,来到陵城区边临镇东于架村,听取当地“三夏”生产工作汇...
和总书记面对面丨耕耘美好生活 夏至时节,金色阳光洒向鲁西北大地的广袤田野。走进山东德州陵城区边临镇东于架村,播种机穿梭,马达声作响...
从“黄金十字路口”到双循环豫东... 商丘高铁站。 王振 摄沿黄高速高台特大桥。 商丘市交通运输局供图商丘保税物流中心。 河南日报资料图片...