模块(2)

一、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())

  

原文地址:https://www.cnblogs.com/acnjanna2019/p/12608511.html