p91-

pickle

  • 将python中所以的数据类型,转换成字节串,序列化过程

  • 将字节串转换成python中数据类型,反序列化过程

import  pickle
s1 = 'aaa'
s2 = pickle.dumps(s1)
print(s2,type(s2))
# b'\x80\x04\x95\x07\x00\x00\x00\x00\x00\x00\x00\x8c\x03aaa\x94.' <class 'bytes'> 字节格式
s3 = b'\x80\x04\x95\x07\x00\x00\x00\x00\x00\x00\x00\x8c\x03aaa\x94.'
s4 = pickle.loads(s3)
print(s4,type(s4)) #aaa <class 'str'>
#pickle 不改变之前的数据类型格式
s1 = json.dumps((1,2,3,4))
s2 = json.loads(s1)
s3 = pickle.dumps((1,2,3,4))
s4= pickle.loads(s3)
print(s2,type(s2)) # [1, 2, 3, 4] <class 'list'>
print(s4,type(s4)) #(1, 2, 3, 4) <class 'tuple'>
#set集合格式 json 不能序列化,但是pickle 可以
set1 = {10,12,3}
p1 = pickle.dumps(set1)
print(p1,type(p1))
#b'\x80\x04\x95\x0b\x00\x00\x00\x00\x00\x00\x00\x8f\x94(K\nK\x03K\x0c\x90.' <class 'bytes'>
#pickle对文件的操作
with open('a.txt',mode='wb') as f:
    pickle.dump([1,2,3],f) #到文件要用dump  ,此时a.txt文件中是乱码 ��       ]�(KKKe.

with open('a.txt',mode='rb') as f:
    result = pickle.load(f)
    print(type(result)) #<class 'list'>
    print(result) #[1, 2, 3]
# json一次性写到文件,一次性读取文件内容,pickle 可以多次
with open('a.txt',mode='wb') as f:
    pickle.dump([1,2,3],f) #写入到txt 显示乱码
    pickle.dump((2,3,4),f) #写入到txt 显示乱码

with open('a.txt',mode='rb') as f:
    result = pickle.load(f)
    result2 = pickle.load(f)
    print(result) #[1, 2, 3]
    print(type(result)) #<class 'list'>

    print(result2) #(2, 3, 4)
    print(type(result2)) #<class 'tuple'>

json 和 pickle 比较

  • json :
    • 不是所有的数据类型都可以序列化
    • 不能多次多次对同一个文件序列化
    • json数据可以跨语言
  • pickle 相反

hashlib

  • 封装一些加密的类
  • md5() sha1 () 等
  • 加密步骤:
    • 1、获取一个加密对象
    • 2、使用加密对象的update()方法
    • 3、通过hexdigest()方法获取加密结果
import hashlib
m = hashlib.md5()
m.update('123456'.encode('utf-8')) #或者用 m.update(b'123456') ,中文不能用b'中国' 用encode
result = m.hexdigest()
print(result) #e10adc3949ba59abbe56e057f20f883e
  • 加密算法,用于验证
import hashlib
m = hashlib.sha224()
m.update('123456'.encode('utf-8'))
result = m.hexdigest()
print(result) #f8cdb04495ded47615258f9dc6a3f4707fd2405434fefc3cbf4ef4e6
#把大的数据分割成不同的小块,分别加密再汇总,和直接加密是一样的结果
import hashlib
m = hashlib.md5()
m.update(b'abcdef') 
print(m.hexdigest()) #e80b5017098950fc58aad83c8c14978e

m2 = hashlib.md5()
m2.update(b'abc')
m2.update(b'def')
print(m.hexdigest()) #e80b5017098950fc58aad83c8c14978e
posted on 2020-07-16 20:07  94小渣渣  阅读(82)  评论(0编辑  收藏  举报