python 无序模块,hashlib模块

时间:2022-12-25 22:37:29
无序模块
什么是无序模块,将字符串转化为十六进制的字符串类型,主要运用在网络编程中。
1,json模块
1,用于网络传输,跨语言,可用的类型有 int str 列表--》元祖会变为列表 字典--》双引号表示
2,缺点:支持的数据类型有限
1.json.dumps()
将字符创转化为bytes类型,用来传输

    2.json.loads()
读取bytes类型
dic = {'剑圣':'我的剑就是你的剑','赵信':'陷阵之志,有死无生','皇子':'犯我德邦者,虽远必诛'}
lol = json.dumps(dic,ensure_ascii=False)  #在网络编程中的dumps将字符串转化为十六进制的字符串类型
print(lol)
ret = json.loads(lol)   #用来解读十六进制
print(ret)

 



3.json.dump()
文件的写入 但是当文件写入数据较多时 需要用dumps
4.json.load()
文件内容读取
f = open('233','a',encoding='utf-8')
json.dump(dic,f)#文件写入
f.close()


f1 = open('233','r',encoding='utf-8')
json.loads(f1)#文件读取
f.close()

 

 

 

 



2.pickle模块
1.在python平台之间使用,使用便利
1,pickle.dumps
2.pickle.loads
3.pockle.dump
4.pockle.load
     
dic = {'剑圣':'我的剑就是你的剑','赵信':'陷阵之志,有死无生','皇子':'犯我德邦者,虽远必诛'}
dic1 = {'剑圣':'我的剑就是你的剑','赵信':'陷阵之志,有死无生','皇子':'犯我德邦者,虽远必诛'}
dic2 = {'剑圣':'我的剑就是你的剑','赵信':'陷阵之志,有死无生','皇子':'犯我德邦者,虽远必诛'}
dic3 = {'剑圣':'我的剑就是你的剑','赵信':'陷阵之志,有死无生','皇子':'犯我德邦者,虽远必诛'}
k = pickle.dumps(dic)
print(k)
l = pickle.loads(k)
print(l)

f = open('233','ab')
ret = pickle.dump(dic,f)
f.close()

f1 =open('233','rb')
print(pickle.load(f1))
f1.close()
f=open('233','wb')
pickle.dump(dic,f)
pickle.dump(dic1,f)
pickle.dump(dic2,f)
pickle.dump(dic3,f)
f.close()
f1 =open('233','rb')
while True:
    try:
        print(pickle.load(f1))
    except EOFError:
        break
f.close()

class A:
    def __init__(self,name,age):
        self.name = name
        self.age = age

a = A('alex',45)
k=pickle.dumps(a)   #读取所有属性,   将a对象的属性序列化
l=pickle.loads(k)
print(l.__dict__)

 



3.shelve模块
专有化的模块,只针对文件的读取调用。
f['']模式


4.hashlib模块
两种运用
1,在文件的校验上面,传输者和接收者的文件是否一致
2,密码的加密 分多种加密方式:
1.MD5 2.sha加密方式
1,文件的一致性校验:
  在文件上传网络之后,为了校验上传的文件和之后的别人接收的文件是否一致,利用hashlib中md5的加密方式,验证两边问价加密后是否密码一致,即使文件有一个空格的不同都会使得加密后的md5密码不一样。
md5obj = hashlib.md5()
with open('file1','rb')as f:
    countent = f.read() #文件加密
    md5obj.update(countent)
print(md5obj.hexdigest())

2,密文验证的时候加密 MD5加密方式, 通用的加密方式 sha文件加密方式, password = input('>>>>') k = hashlib.md5() k.update(password.encode('utf-8')) m = hashlib.md5() m.update('233'.encode('utf-8')) if k.hexdigest() == m.hexdigest(): print('666') else: print('2333')