万叶集 |
---|
🎉 隐约雷鸣,阴霾天空。 🎉 |
🎉 但盼风雨来,能留你在此。 🎉 |
前言:
✌ 作者简介:渴望力量的哈士奇,大家可以叫我 🐶哈士奇🐶 。(我真的有一只哈士奇)
🏆 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.json
与 gift.json
。
🐳 抽奖系统代码结构图
在
pycharm
中创建一个gift
的项目
- 创建 common 包,在 common 包内分别创建
error.py
、consts.py
、utils.py
模块。- 创建 storage 包(其实就是个文件夹),创建
user.json
、gift.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)
执行结果如下:
尝试做几个文件异常的判断:
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)