今日内容详细024
序列化模块
序列就是字符串
序列化是把其他数据类型转为json字符串的过程
把json字符串转为其他数据类型的过程就是反序列化
'''json字符串 json对象'''
在Python中把其他数据类型转为json需要使用json模块
json模块中四个方法
d={"username":'kevin','age':18}
res=json.dumps(d)
print(res,type(res))
res1=json.loads(res)
print(res1,type(res1))
小案例:
import json
d={"username":'kevin','age':18}
with open('data.txt','w',encoding='utf-8') as w1:
w1.write(json.dumps(d))
with open('data.txt','r',encoding='utf-8') as r1:
res=json.loads(r1.read())
print(res,type(res))
res=[1,2,3,4,5,6,7]
with open('data.txt','w',encoding='utf-8') as w1:
json.dump(res,w1)
with open('data.txt','r',encoding='utf-8') as r1:
res=json.load(r1)
print(res,type(res))
d=['你好啊','123']
print(d,json.dumps(d,ensure_ascii=False))
+---------------+-------------------+
| JSON | Python |
+===============+===================+
| object | dict |
+---------------+-------------------+
| array | list |
+---------------+-------------------+
| string | str |
+---------------+-------------------+
| number (int) | int |
+---------------+-------------------+
| number (real) | float |
+---------------+-------------------+
| true | True |
+---------------+-------------------+
| false | False |
+---------------+-------------------+
| null | None |
+---------------+-------------------+
pickle模块
pickle的使用方法跟json一摸一样,json中四个方法,pickle也是这四个方法
能够被序列化的数据类型不一样,json能够序列化的数据类型是有限的
pickle能够序列化的类型:所有数据类型
'''被pickle处理之后的数据只能在Python中使用'''
pickle序列化之后的结果是二进制的
import pickle
l=[1,2,3,4,5,6]
res=pickle.dumps(l)
print(res)
res1=pickle.loads(res)
print(res1)
l=[1,2,3,4,5,6]
with open('data.txt','wb') as w:
w.write(pickle.dumps(l))
with open('data.txt','rb') as a:
res=a.read()
print(pickle.loads(res),type(pickle.loads(res)))
l=[1,2,3,4,5,6]
with open('data.txt','wb') as w:
pickle.dump(l,w)
with open('data.txt','rb') as a:
res=pickle.load(a)
print(res,type(res))
l=[1,2,3,4,5,6,'利好啊']
with open('data.txt','wb') as w:
pickle.dump(l,w)
with open('data.txt','rb') as a:
res=pickle.load(a)
print(res)
hashlib模块
摘要算法又称哈希算法,散列算法,它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通过用16进制的字符串表示)
1.先指定使用的加密算法:MD5,sha系列:sha1,sha128,sha256等
import hashlib
m=hashlib.md5()
m.update(b'123456')
print(m.hexdigest())
'''不管你加密的数据有多长,得到的加密解构都是固定长度的,前提是使用同一种算法'''
怎么取出加密之后的结果呢?
username=input(':').strip()
password=input(':').strip()
m=hashlib.md5()
m.update(password.encode('utf-8'))
new_password=m.hexdigest()[0:16]
data_user='%s|%s'%(username,new_password)
with open('data.txt','w',encoding='utf-8') as w1:
w1.write(data_user)
usernames=input('username:').strip()
passwords=input('passowrd:').strip()
with open('data.txt','r',encoding='utf-8') as r1:
real_user,real_pwd=r1.read().strip().split('|')
m=hashlib.md5()
m.update(passwords.encode('utf-8'))
new_code=m.hexdigest()[0:16]
if usernames == real_user and new_code == real_pwd:
print('sucess')
else:
print('err')
username=input(':').strip()
password=input(':').strip()
m=hashlib.md5()
m.update(password.encode('utf-8'))
new_password=m.hexdigest()[0:16]
tmp='lst'
new_password+=tmp
data_user='%s|%s'%(username,new_password)
with open('data.txt','w',encoding='utf-8') as w1:
w1.write(data_user)
usernames=input('username:').strip()
passwords=input('passowrd:').strip()
with open('data.txt','r',encoding='utf-8') as r1:
real_user,real_pwd=r1.read().strip().split('|')
m=hashlib.md5()
m.update(passwords.encode('utf-8'))
new_code=m.hexdigest()[0:16]
new_code +='lst'
if usernames == real_user and new_code == real_pwd:
print('sucess')
else:
print('err')
def get_code(n):
code=''
for i in range(n):
rand_int=str(random.randint(0,9))
rand_lower=chr(random.randrange(97,122))
rand_upper=chr(random.randrange(65,90))
tmp=random.choice([rand_int,rand_lower,rand_upper])
code+=tmp
return code
username=input(':').strip()
password=input(':').strip()
random_str=get_code(4)
password+=random_str
m=hashlib.md5()
m.update(password.encode('utf-8'))
new_password=m.hexdigest()[0:16]
data_user='%s|%s|%s'%(username,new_password,random_str)
with open('data.txt','w',encoding='utf-8') as w1:
w1.write(data_user)
usernames=input('username:').strip()
passwords=input('passowrd:').strip()
with open('data.txt','r',encoding='utf-8') as r1:
real_user,real_pwd,random_str=r1.read().strip().split('|')
passwords+=random_str
m=hashlib.md5()
m.update(passwords.encode('utf-8'))
new_code=m.hexdigest()[0:16]
if usernames == real_user and new_code == real_pwd:
print('sucess')
else:
print('err')
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)