Python语法进阶篇 - 78 - 综合实战- 抽奖系统之项目介绍、环境搭建、搭建项目基础类

Python语法进阶篇 - 78 - 综合实战- 抽奖系统之项目介绍、环境搭建、搭建项目基础类,第1张

万叶集
🎉 隐约雷鸣,阴霾天空。 🎉
🎉 但盼风雨来,能留你在此。 🎉

前言:
✌ 作者简介:渴望力量的哈士奇,大家可以叫我 🐶哈士奇🐶 。(我真的有一只哈士奇)
🏆 CSDN博客专家认证、新星计划第三季全栈赛道 top_1 、华为云享专家、阿里云专家博主 🏆
📫 如果文章知识点有错误的地方,请指正!和大家一起学习,一起进步👀
💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬
🔥 如果感觉博主的文章还不错的话,还请👍关注、点赞、收藏三连支持👍一下博主哦


📕 系列专栏:
               ⛽️ Python全栈系列 - [更新中]     【 本文在该系列】
                       🍎 Python零基础入门篇
                       🍎 Python语法进阶篇
               👋 网安之路系列
​                       🍋 网安之路踩坑篇
​                       🍋 网安知识扫盲篇
​                       🍋 Vulhub 漏洞复现篇
​                       🍋 Shell脚本编程篇
​                       🍋 Web攻防篇   2021年9月3日停止更新,转战先知等安全社区
​                       🍋 渗透工具使用集锦  2021年9月3日停止更新,转战先知等安全社区
​                ⭐️ 点点点工程师系列
​                       🍹 测试神器 - Charles 篇
​                       🍹 测试神器 - Fiddler 篇
​                       🍹 测试神器 - Jmeter 篇
​                       🍹 自动化 - RobotFrameWork 系列
​                       🍹 自动化 - 基于 JAVA 实现的WEB端UI自动化
                       🍹 自动化 - 基于 MonkeyRunner 实现的APP端UI自动化

接下来就是 Python语法进阶篇 的重头戏 — > 综合实战,主题将会是一个通过命令行执行抽奖的 *** 作。效果虽然简单,但是如果想要完美的展现出来,还需要更好的定义结构,接下来为大家介绍 “抽奖系统中的业务功能模块” 。

文章目录
    • 🐳 抽奖系统项目介绍
    • 🐳 抽奖系统三大区域介绍
      • 🐬 抽奖系统 - common 模块的功能介绍
      • 🐬 抽奖系统 - storage 模块
    • 🐳 抽奖系统代码结构图
    • 🐳 项目基础类 - 文件检查


🐳 抽奖系统项目介绍

该系统一共有三个模块。

第一个模块:base 模块,即基础模块。

该模块实现的功能为:

功能点:避免业务逻辑,只做底层的相关 *** 作;比如对用户的增删改查,奖品的增删改查(这些功能只是单纯的 *** 作文件,而不是处理复杂的业务逻辑),直接和 storage 模块的关联。(稍后介绍 storage 模块)。

知识点:

  • 父类的创建。
  • json文件的读写,私有函数的定义。
  • 字典的练习,循环的练习。
  • 条件语句的练习。
  • 异常的处理与抛出。

第二个模块:admin 模块,这是给管理员的模块。

该模块实现的功能为:

功能点:

  • 继承 base 模块
  • 开发用户的增删改查
  • 开发奖品的增删改查
  • PS:似乎与 base 模块相同,其实不然。admin 模块的 增删改查 是添加业务逻辑处理的,比如满足了某些条件才能够执行修改或删除…

知识点:

  • 类的继承
  • 多态的练习 super 函数
  • 条件语句的练习
  • 循环语句的练习

第三个功能模块: user 模块,主要实现用户的验证与抽奖 *** 作

该模块的功能未:

功能点:

  • 用户身份验证
  • 抽奖功能的实现

知识点:

  • 类的继承
  • 父类私有函数的调用
  • 启蒙与强化开发思维
🐳 抽奖系统三大区域介绍


🐬 抽奖系统 - common 模块的功能介绍


🐬 抽奖系统 - storage 模块

严格意义来说,storage 其实并不是一个模块,而是一个文件夹。 这里会存放两个文件:user.jsongift.json



🐳 抽奖系统代码结构图
  • pycharm 中创建一个 gift 的项目

    • 创建 common 包,在 common 包内分别创建 error.pyconsts.pyutils.py 模块。
    • 创建 storage 包(其实就是个文件夹),创建 user.jsongift.json 分别存储用户信息和奖品信息。
    • 而我们的 base、admin、user 模块则是直接创建在 gift的项目根目录下即可,见下图:

    PS:这也是一个比较简单的代码结构。



🐳 项目基础类 - 文件检查

接下来通过 base.py 来书写基础类,当前要实现的基本功能就是导入 user.json 与 gift.json 进行文件检查

我们需要自定义三个异常类用来判断文件的异常:

  • 1、判断文件地址路径是否存在 —> NotPathError
  • 2、判断文件是否是 json 格式 —> FormatError
  • 3、判断是否是文件 —> NotFileError

base.py 基础类文件检查示例如下:

# coding:utf-8


"""
    1:导入 user.json ,文件检查
    2:导入 gift.json ,文件检查
"""


import os
from common import error


class Base(object):
    def __init__(self, user_json, gift_json):
        self.user_json = user_json
        self.gift_json = gift_json

        self.__check_user_json()
        self.__check_gift_json()

    def __check_user_json(self):
        if not os.path.exists(self.user_json):  # 判断文件地址路径是否存在
            raise error.NotPathError("not found {} ".format(self.user_json))

        if not self.user_json.endswith('.json'):   # 判断文件是否是 json 格式
            raise error.FormatError()

        if not os.path.isfile(self.user_json):     # 判断是否是文件
            raise error.NotFileError()

    def __check_gift_json(self):
        if not os.path.exists(self.gift_json):  # 判断文件地址路径是否存在
            raise error.NotPathError("not found {} ".format(self.gift_json))

        if not self.gift_json.endswith('.json'):  # 判断文件是否是 json 格式
            raise error.FormatError()

        if not os.path.isfile(self.gift_json):
            raise error.NotFileError()


if __name__ == '__main__':

    user_path = os.path.join(os.getcwd(), "storage", "user.json")
    gift_path = os.path.join(os.getcwd(), "storage", "gift.json")
    print(user_path)
    print(gift_path)

    base = Base(user_json=user_path, gift_json=gift_path)
    print(base)

common 模块error.py 脚本的代码如下:

# coding:utf-8


class NotPathError(Exception):		# 文件路径错误
    def __init__(self, message):
        self.message = message


class FormatError(Exception):		# 文件格式后缀错误
    def __init__(self, message="file need json format"):
        self.message = message


class NotFileError(Exception):		# 非文件错误
    def __init__(self, message="It's not file"):
        self.message = message

此时在 base.py 基础模块中我们发现, __check_user_json()__check_gift_json() 函数的基本功能是一样的,都是检查文件。这个时候就可以将其封装为一个公共函数 check_file 用以调用,所以我们可以在 utils.py 模块定义一个 check_file 函数。

utils.py 模块 check_file 函数示例如下:

# coding:utf-8


import os
from .error import NotPathError, NotFileError, FormatError


def check_file(path):
    if not os.path.exists(path):  # 判断文件地址路径是否存在
        raise NotPathError("not found {} ".format(path))

    if not path.endswith('.json'):  # 判断文件是否是 json 格式
        raise FormatError()

    if not os.path.isfile(path):  # 判断是否是文件
        raise NotFileError()

那么此时我们的 base.py 基础模块优化后的脚本代码就如下:

# coding:utf-8


"""
    1:导入 user.json ,文件检查
    2:导入 gift.json ,文件检查
"""


import os
from common.utils import check_file


class Base(object):
    def __init__(self, user_json, gift_json):
        self.user_json = user_json
        self.gift_json = gift_json

        self.__check_user_json()
        self.__check_gift_json()

    def __check_user_json(self):
        check_file(self.user_json)

    def __check_gift_json(self):
        check_file(self.gift_json)


if __name__ == '__main__':

    user_path = os.path.join(os.getcwd(), "storage", "user.json")
    gift_path = os.path.join(os.getcwd(), "storage", "gift.json")
    print(user_path)
    print(gift_path)

    base = Base(user_json=user_path, gift_json=gift_path)
    print(base)

执行结果如下:



尝试做几个文件异常的判断:




欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/716877.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-25
下一篇 2022-04-25

发表评论

登录后才能评论

评论列表(0条)

保存