序列化、反序列化
序列:字符串
序列化:将其他数据类型转为字符串
写文件必须是字符串或者是二进制形式
基于网络传输的数据必须是二进制
反序列化:将字符串转为其他数据类型的过程
json数据格式
json数据格式就是各个语言之间沟通的桥梁
json模块
支持的数据类型较少:
字典、列表、元组->列表、整型、浮点型、字符串、布尔值
pickle模块
支持所有数据类型
只能在python间互通
使用序列化、反序列化
d = {'egon':'dsb'}
'''json使用方法类似str转化'''
序列化
res1 = json.jumps(d) # 现在格式为字符串
反序列化
res2 = json.loads(res1) # 现在格式又变成字典
如果数据内有中文,序列化后会显示出编码后内容,想显示中文需要在被转化数据后添加ensure_ascii=False
例:
res = {'username':'李洋'}
print(res,ensure_ascii=False)
'''pickle使用方法'''
序列化
res1 = pickle
项目
项目开发模式
1.瀑布模式:项目开发完毕再进行测试
2.敏捷开发:开发一部分,测试一部分
测试软件:禅道
瀑布模式
1.需求分析
2.程序设计或者架构设计
程序设计:
选型语言 python
需求转为功能
架构设计:
3.分工合作开发
4.测试:自测、专业测试
5.上线
ATM作业流程
处理环境变量
# 创建一个启动文件
import os,sys
path = os.path.dirname(__file__)
# path此时是总项目目录
sys.path -> # 显示当前环境
sys.path.append(path)
# 将当前文件夹加入环境变量
功能需求分析
# 先罗列出所有功能0.退出1.登录2.注册3.查看余额4.转账5.提现6.重置7.查看流水8.购物9.加入购物车
代码拆分
文件中有很多经常使用的代码,为了方便,将其拆分到各个py文件内变成模块
'''数据相关'''
import os,json
# 修改用户数据
def update(user_dict): # 更新数据
ATM_file = os.path.join(settings.ATM, 'db', '%s.json'%user_dict['username'])
with open(ATM_file, mode='wt', encoding='utf-8')as f:
json.dump(user_dict, f)
f.flush()
# 查询用户数据
def select(user_name): # 查询数据
ATM = settings.ATM
ATM_file = os.path.join(ATM, 'db', f'{user_name}.json')
if os.path.exists(ATM_file):
with open(ATM_file,mode='rt',encoding='utf-8')as f:
return json.load(f)
else:
return False
'''配置文件'''
import os
# 总项目路径
ATM = os.path.dirname(os.path.dirname(__file__))
登录功能实现
'''先写需求,按照顺序先后满足'''
1.判断用户是否已经登录
2.输入用户名
3.判断用户名是否存在
4.判断用户是否被冻结
5.输入密码
6.判断密码是否输入正确
7.输入正确则修改状态栏为已登录状态
8.输入密码错误达三次冻结该用户
注册功能实现
'''先写需求,按照顺序先后满足'''
1.输入用户名
2.判断用户名是否存在
3.输入密码,进行二次输入,判断二次输入是否一致