day20

今日内容:
    1、包的使用(****2、json&pickle模块
    3、hashlib模块

import aaa

aaa.m1.f1()
aaa.f2()
aaa.f3()

d = {'k1': 123}
s = str(d)
print(s)



"""
什么是包?
    包是一个含有__init__.py文件的文件夹,本质就是一个模块,是用来被导入的

为何要有包?

"""
# import sys
# print(sys.path)
# sys.path.append(r"D:\\")
# import aaa
# 首次导入包这种模块,发生两件事
# 1、创建模块的名称空间,运行包下的__init__.py的文件,将运行过程中产生的名字都丢入模块的名称空间中
# 2、在当前位置拿到一个名字aaa,该名字指向__init__.py的名称空间,即aaa.名字,名字是来自于__init__.py中的

# print(aaa.x)

# aaa.m1.f1()
# aaa.m2.f2()
#
# aaa.bbb.f3()

# 新示例
import aaa

# aaa.f1()
# aaa.f2()
aaa.f3()



"""
1、什么是序列化与反序列化
    内存中某一类的数据---------------》特殊的格式
    内存中某一类的数据《---------------特殊的格式
2、为何要序列化
    1、存档:把内存中的数据持久化到硬盘
    2、跨平台交互数据

    在python中:
        存档=》推荐用pickle格式
        跨平台交互=》推荐用json格式
3、如何序列化



"""
# 一:low的序列化与反序列化方式
# 1.序列化
# items=["圣剑","蝴蝶","BKB"]
#
#
# dic_str=str(items)
#
# with open('db.txt',mode='wt',encoding="utf-8") as f:
#     f.write(dic_str)

# 2.反序列化
# with open('db.txt',mode='rt',encoding='utf-8') as f:
#     data=f.read()  # "['圣剑', '蝴蝶', 'BKB']"
#
#     items=eval(data)
#     print(items[0])

# 二:json
# 优点:跨平台交互数据
# 缺点:无法识别所有的python数据类型
# 注意:json格式的字符串里不能包含单引号
import json

# 序列化方式一:
# t={"a":1,"b":2}  # 字典=======》json格式的字符串:"[1,2,3]"

# res=json.dumps(t)
# print(res,type(res))

# with open("a.json",mode='wt',encoding='utf-8') as f:
#     f.write(res)

# json反序列化方式一:
# with open("a.json",mode='rt',encoding='utf-8') as f:
#     data=f.read()
#     dic=json.loads(data)
#     print(dic,type(dic))

# res=json.loads('{"k1":111}')
# print(res['k1'])

# json序列化方式二:
# t={"a":1,"b":2}  # 字典=======》json格式的字符串:"[1,2,3]"
#
#
# with open("b.json",mode='wt',encoding='utf-8') as f:
#     json.dump(t,f)

# json反序列化方式二:
# with open("b.json",mode='rt',encoding='utf-8') as f:
#     dic=json.load(f)
#     print(dic,type(dic))


# 三:pickle
# 优点:可以识别所有python类型
# 缺点:只能用于python中,无法跨平台交互
import pickle

# s = {1,2,3,4,5}
#
# res=pickle.dumps(s)
# # print(res,type(res))
# with open('a.pkl',mode='wb') as f:
#     f.write(res)


with open('a.pkl',mode='rb') as f:
    data=f.read()
    s=pickle.loads(data)
    print(type(s))



'''
hash是一种算法(md5\sha256\sha512等),我们为该算法传入内容,该算法会计算得到一串hash值
hash值具备以下三个特点:
    1、如果传入的内容一样,并且采用hash算法也一样,那么得到个hash值一定是一样的
    2、hash值的长度取决于采用的算法,与传入的文本内容的大小无关
    3、hash值不可逆
'''
import hashlib

# m=hashlib.md5()
# m.update("你好".encode('utf-8'))
# m.update("egon".encode('utf-8'))
# m.update("哈哈哈".encode('utf-8'))  # "你好egon哈哈哈"
# res=m.hexdigest()
# print(res)
#
# m1=hashlib.md5("你".encode('utf-8'))
# m1.update("好eg".encode('utf-8'))
# m1.update("on哈哈哈".encode('utf-8'))  # "你好egon哈哈哈"
# res=m1.hexdigest()
# print(res)


# m2=hashlib.md5()
# with open('aaa.png',mode='rb') as f:
#     for line in f:
#         m2.update(line)
#     print(m2.hexdigest())


pwd="123"

m3=hashlib.md5()
m3.update("天王盖地虎".encode('utf-8'))
m3.update(pwd.encode('utf-8'))
m3.update("小鸡炖蘑菇".encode('utf-8'))

print(m3.hexdigest())

 

posted @ 2020-07-30 08:50  板鸭没有腿  阅读(72)  评论(0)    收藏  举报