'''
数据处理层
'''

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  # 如果存在返回用户信息字典

入门项目 A4 db_handler 数据操作文件的更多相关文章

  1. 基于 Vue.js 之 iView UI 框架非工程化实践记要 使用 Newtonsoft.Json 操作 JSON 字符串 基于.net core实现项目自动编译、并生成nuget包 webpack + vue 在dev和production模式下的小小区别 这样入门asp.net core 之 静态文件 这样入门asp.net core,如何

    基于 Vue.js 之 iView UI 框架非工程化实践记要   像我们平日里做惯了 Java 或者 .NET 这种后端程序员,对于前端的认识还常常停留在 jQuery 时代,包括其插件在需要时就引 ...

  2. python操作三大主流数据库(14)python操作redis之新闻项目实战②新闻数据的展示及修改、删除操作

    python操作三大主流数据库(14)python操作redis之新闻项目实战②新闻数据的展示及修改.删除操作 项目目录: ├── flask_redis_news.py ├── forms.py ├ ...

  3. Python 入门基础6 --字符编码、文件操作1

    今日内容: 1.字符编码 2.字符与字节 3.文件操作 一.字符编码 了解: cpu:将数据渲染给用户 内存:临时存放数据,断电消失 硬盘:永久存放数据,断电后不消失 1.1 什么是编码? 人类能够识 ...

  4. QT从入门到入土(三)——文件的读写操作

     引言 文件的读写是很多应用程序具有的功能,甚至某些应用程序就是围绕着某一种格式文件的处 理而开发的,所以文件读写是应用程序开发的一个基本功能. Qt 提供了两种读写纯文本文件的基本方法: 用 QFi ...

  5. hive从入门到放弃(三)——DML数据操作

    上一篇给大家介绍了 hive 的 DDL 数据定义语言,这篇来介绍一下 DML 数据操作语言. 没看过的可以点击跳转阅读: hive从入门到放弃(一)--初识hive hive从入门到放弃(二)--D ...

  6. Android数据存储-文件操作

    一.预备知识 1.Android中的MVC设计模式 MVC (Model-View-Controller):M是指逻辑模型,V是指视图模型,C则是控制器.一个逻辑模型可以对于多种视图模型,比如一批统计 ...

  7. HealthKit开发快速入门教程之HealthKit数据的操作

    HealthKit开发快速入门教程之HealthKit数据的操作 数据的表示 在HealthKit中,数据是最核心的元素.通过分析数据,人们可以看到相关的健康信息.例如,通过统计步数数据,人们可以知道 ...

  8. Django项目的创建与介绍.应用的创建与介绍.启动项目.pycharm创建启动项目.生命周期.三件套.静态文件.请求及数据.配置Mysql完成数据迁移.单表ORM记录的增删改查

    一.Django项目的创建与介绍 ''' 安装Django #在cmd中输入pip3 #出现这个错误Fatal error in launcher: Unable to create process ...

  9. python第二十九课——文件读写(读取数据操作)

    演示读取数据操作:path=r'a.txt' 1.打开文件f1=open(path,'r') 2.读取数据content1=f1.read(3)print(content1) content1=f1. ...

随机推荐

  1. jQuery循环

    1.循环数组.对象: .$each(数组/对象,结果函数),即.$(arr,function(x,y) {...} ) 如果是数组,则函数中的x表示索引,y表示索引对应的值,只传递一个参数的话则表示索 ...

  2. jQuery 查找元素2

    jQuery 查找元素2 :first <ul> <li>list item 1</li> <li>list item 2</li> < ...

  3. 王之泰201771010131《面向对象程序设计(java)》第六周学习总结

    第一部分:理论知识学习部分 第五章 第五章学习内容主要分为七个模块,分别为: 1.类.超类和子类: a. 类继承的格式: class 新类名extends已有类名. b. 已有类称为:超类(super ...

  4. linux中使用ifconfig命令查看网卡信息时显示为eth1,但是在network-scripts中只有ifcfg-eth0的配置文件,并且里面的NAME="eth0"。

    除了题目中的问题,其实在执行命令:service network restart时,会报错: 解决办法: 首先需要修改70-persistent-net.rules文件: vim /etc/udev/ ...

  5. CBV与FBV

    FBV FBV(function base views)就是在 url 中一个路径对应一个函数 urls.py urlpatterns = [ url(r'^admin/', admin.site.u ...

  6. win10更新后 chrome内核浏览器总是打开网页一直加载 甚至打不开 解决方法

    https://blog.csdn.net/qq754772661/article/details/81452131 升级win10之后如果出现chrome内核的浏览器网页总是打不开 打开很慢 而ie ...

  7. Java中的CAS实现原理

    一.什么是CAS? 在计算机科学中,比较和交换(Conmpare And Swap)是用于实现多线程同步的原子指令. 它将内存位置的内容与给定值进行比较,只有在相同的情况下,将该内存位置的内容修改为新 ...

  8. $set()的正确使用方式

    vue给对象新增属性,并触发视图更新 如下代码:给student对象新增age属性 data () { return { student: { name: '', sex: '' } } } 众所周知 ...

  9. 《温故而知新》JAVA基础六

    多态(父子类之间) 对象的多种形态 引用多态 父类的引用可以指向本类对象 父类的引用可以指向子类的对象 方法的多态 创建本类对象时候,调用的方法是本类方法 创建子类对象时候,调用的方法为子类重写的方法 ...

  10. Android View 阴影的总结

    关于 Android 阴影,大家肯定不陌生的.但是Android 中到底有多少种方式可以实现阴影效果以及各种方式之间有什么区别和优缺点,这就是我想总结的.下面我们一个一个来说: 一.各种实现阴影的方式 ...