本文主要介绍软件开发规范,并且通过一个实际的blog的拆分实例来进行讲解。
''' 整体说明: 01 项目的目录结果如下: (1)bin:用于存放启动文件,startup.py (2)conf:用于存放配置文件,settings.py (3)core:用于存放核心逻辑代码,src.py (4)db:用于存放数据文件 ,register.py (5)lib:用于存放公共组件,common.py (6)log:用于存放日志文件,access.log (7)README:用于说明以下几个事项。 (a)软件定位,软件的基本功能。 (b)运行代码的方法:安装环境,启动命令等。 (c)简要的使用说明。 (d)代码目录结构说明,更详细点可以说明软件的基本原理。 (e)常见的问题说明。 (f)参考示例:https://github.com/antirez/redis#what-is-redis 02 __file__:查看文件的当前目录 03 dirname(__file__):可获取项目的根目录 ''' '''' 需求:将以下程序按照软件开发规范来进行整理 ''' def logger(f): def inner(*args, **kwargs): with open(LOG_PATH, encoding='utf-8', mode='a+') as f1: f1.write('您访问了%s' % (f.__name__)) ret = f(*args, **kwargs) return ret return inner def register(): with open(DB_PATH, encoding='utf-8', mode='a+') as f1: f1.write('太白金星|123 ') def login(): pass @logger def comment(): print('欢迎访问评论页面') @logger def article(): print('欢迎访问文章页面') @logger def diary(): print('欢迎访问日记页面') dic = { 1: register, 2: login, 3: comment, 4: article, 5: diary } def run(): while 1: choice = input('请输入') if choice.isdigit(): choice = int(choice) dic[choice]() else: print('请重新输入') run() '''整理过程如下:''' '''bin -> startup.py''' # import src 直接引用不行,src这个模块没在这三个当中 # 先从内存 ---> 内置模块(os,time sys..) ---> sys.path import sys import os # sys.path.append(r'D:24期周末班day07log') # print(__file__) # 文件的当前目录 # print(os.path.dirname(os.path.dirname(__file__))) # 获取到了项目根目录 # 通过将项目根目录添加至sys。path后,项目内的所有模块就可以实现相互调用了 BASE_PATH = os.path.dirname(os.path.dirname(__file__)) sys.path.append(BASE_PATH) from core import src # 用户代码调数,如果__name__等于__main__可以执行,如果__name__等于模块名,说明模块被调用,所以不能启动程序。 if __name__ == '__main__': src.run() '''conf -> settings.py''' DB_PATH = r'D:pythonweekend24day07logdb egister' LOG_PATH = r'D:pythonweekend24day07loglogaccess.log' '''core -> src.py''' # -*- encoding:utf-8 -*- # from lib import common from conf import settings def register(): with open(settings.DB_PATH, encoding='utf-8', mode='a+') as f1: f1.write('太白金星|123 ') def login(): pass @common.logger def comment(): print('欢迎访问评论页面') @common.logger def article(): print('欢迎访问文章页面') @common.logger def diary(): print('欢迎访问日记页面') dic = { 1: register, 2: login, 3: comment, 4: article, 5: diary } def run(): while 1: choice = input('请输入') if choice.isdigit(): choice = int(choice) dic[choice]() else: print('请重新输入') '''lib -> common.py''' from conf import settings def logger(f): def inner(*args, **kwargs): with open(settings.LOG_PATH, encoding='utf-8', mode='a+') as f1: f1.write('您访问了%s' %(f.__name__)) ret = f(*args, **kwargs) return ret return inner '''db -> register''' '''log ->access.log'''