'''
数据处理层
'''
from conf import settings
# 以下代码中有提前定义的路径函数,需要导入配置文件包下面的设置模块
import json
# 以下代码中有需要序列化写入,所以调用内置json序列化模块
# 调用os模块,用于路径查找
import os
# 定义一个保存数据函数
def save(user_dic):
# DB_PATH = settings.DB_PATH # D:/ATM\db
# db_path/username.json
with open('%s/%s.json' % (settings.DB_PATH, user_dic.get('name')), 'w', encoding='UTF-8') as f:
# 打开文件 采用格式化写入 D:/ATM\db/用户输入的注册姓名,
# 因为已经导入了setting模块,可以使用setting中得DB_PAH路径,拼接用户信息字典的名字K的值,(get方法不报错)
# w模式为没有存在就创建并写入,编码通常采用万国码 UTF-8 解码编码
# 起别名为f
res = json.dumps(user_dic)
# res作为变量名,接收 采用序列化输入的格式 用转储方法 原样的存储用户信息字典中的所有内容
f.write(res) # 将变量名res的接收的信息写入文件f中
f.flush()
# 冲刷文件 可 理解为刷新,因为程序刷新文件都是自上而下,像水流一样,
# 结合当时早期开发者的cpu处理速度,所有此方法没有采用fresh命名,
# 而采用眼睛所见到的,更形象的自上而下显示程序代码的形态,冲刷flush命名
# 定义查找用户名的文件是否存在
def select(name):
user_path = '%s/%s.json' % (settings.DB_PATH, name) # 用户名路径,等于,setting模块下的DB_PATH路径拼接用户名
if not os.path.exists(user_path): # os.path.exists
# 判断路径是否存在返回True或者False,os.path.exists(user_path)判断用户路径中是否存在,
# 如果存在则 返回True,if not True, 等同于 if False ,不执行,直接进入文件读取
# 如果不存在则 返回False,if not False,等同于 if True ,执行return 返回空
return # 不设返回值
with open(user_path, 'r', encoding='utf-8')as f: # 存在就打开拼接文件路径,读取模式,万国码,起别名f
res = f.read() # 接收 读取文件
user_dic = json.loads(res) # 接收 文件序列化加载为用户信息字典格式
return user_dic # 如果存在返回用户信息字典