一、jason&pickle模块
什么是序列化?
指的是把内存数据类型转换成一种特定格式的内容
该格式内容可用于存储或传输给其他平台使用
为何要序列化?
1、可用于存储,用于存档
2、传输给其他平台使用,跨平台数据交互
如果我们要在不同的编程语言之间使递传象,就必须把对象序列化 标准格式,比如XML,但更好的方法是序列化为JSON,因为JSON表示出来就是一个字符串,可以被所有语言读取,也可以方便地存领教到磁盘或者通过网络传输。JSON不仅是标准格式,并且比XML更快,而且可以直接在WEB页面中读取,非常方便。
内存中结构化的数据<-->格式json<-->字符串<-->保存到文件中或基于网络传输
import json #序列化 json_res = json.dumps([1,"aaa",True,False]) print(json_res) #反序列化 L = json.loads(json_res) print(L,type(L))
import json #序列化的结果写入文件的简单方法 with open("tst.json","wt",encoding="utf-8") as f: json.dump([1,"aaa",True,False],f) #从文件读取json格式的字符串进行反序列化操作的简单方法 with open("test.json","rt",encoding="utf-8") as f: l = json.load(f) print(l,type(l))
json验证:json格式兼容的是所有语言通用的数据类型,不能识别某一语言所独有的
如python的集合
强调:不要与Python混淆
json里用" " 引号,python里可以使用‘ ’ 单引
猴子补丁 在入口处打猴子补丁 import json import ujson def monkey_patch_json(): json.__name__='ujson" json.dumps = ujson.dumps json.loads= ujson.loads monkey_patch_json()
二、configparser模块
import configparser
config = configparser.ConfigParser()
config.read("test.ini")
#获取sections
#print(config.sections())
#获取某一section下的所有options
#print(config.options("section"))
#获取items
#print(config.items("section"))
#获取指定的
#print(config.get("section","user"))
# res = config.getint("section","age")
# print(res)
三、hashlib模块
1、什么叫hash:就是一种算法,该算法接受传入的内容,经过运算得到一串hash值
2、特点:
只要传入的内容一样,得到的hash值必然一样,要用明文传输密码文件完整性校验
不能由hash值返解成内容,把密码做成hash值,不应该在网络传输明文密码
只要使用的hash算法不变,无论校验的内容有多大,得到的hash值长度是固定的
hash算法就像一座工厂,工厂接收你送来的原材料(可以用m.update()为工厂运送原材料),经过加工返回的产品就是hash值
import hashlib m = hashlib.md5() m.update("hello".encode("utf-8")) print(m.hexdigest()) m.update("alvin'.encode("utf8")) print(m.hexdigest()) m2=hashlib.md5() m2.update("helloalvin".encode("utf8")) print(m2.hexdigest())
以上加密算法虽然依然非常历害,但时候存在缺陷,即:通过撞库存可以反解。所以,有必要对加密算法中添加自定义key再来做加密。 import hashlib hash = hashlib.sha256("898paFs09f".encode("urt8")) hash.update("alvin".encode("utf8")) print(hash.hexdigest())
import hnac h = hmac.new("alvin".encode("utf8")) h.update("hello".encode("utf8")) print(h.hexdigest())