Python之第三十天的努力--软件开发规范
Posted szheng
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python之第三十天的努力--软件开发规范相关的知识,希望对你有一定的参考价值。
软件开发规范
-
为什么要有软件开发规范?
app 软件 不可能全部都写在一个文件中,加载效率低,不容易查找,不规范。
代码越多,你越不可能放在一个文件中,你需要将你的代码分文件。
软件开发规范。
-
bin文件夹 --->启动文件starts
# import src # 直接引用不到 # 这么做虽然实现了,但是有问题 # 问题一1.项目中的py文件,肯定会互相引用,src 引用 settings, src 引用 common.... # import sys # sys.path.append(r‘E:pycharmPython世界从0开始学Pythonday17logcore‘) # # import src # src.run() # 不能一个一个添加。 # 解决问题1: # import sys # 直接添加blog的目录 # sys.path.append(r‘E:pycharmPython世界从0开始学Pythonday17log‘) # # from core import src # src.run() # 问题2:此项目 在我的计算机中的路径为:E:pycharmPython世界从0开始学Pythonday17log # 但是在别人的计算机内就不一定,这样就写死了。 # 解决 # 动态的获取blog的路径 无论在谁的计算机中,都可以找到blog的绝对路径。 # import sys # import os # print(__file__) # 动态获取本文件的绝对路径 # print(os.path.dirname(__file__)) # 获取父级的目录 # print(os.path.dirname( os.path.dirname(__file__) ) ) # 获取爷级的目录 ####################以上为思路################### import sys import os BASE_PATH = os.path.dirname(os.path.dirname(__file__)) sys.path.append(BASE_PATH) from core import src if __name__ == ‘__main__‘: src.run()
-
conf文件夹 ---> settings(配置文件)
import os BASE_PATH = os.path.dirname(os.path.dirname(__file__)) username_path = os.path.join(BASE_PATH,‘db‘,‘username‘)
-
core文件夹 ---> src(主逻辑文件)
from conf import settings from lib import common def table_print(): ‘‘‘ 打印目录 ‘‘‘ print(‘1.请登录‘) print(‘2.请注册‘) print(‘3.进入文章页面‘) print(‘4.进入评论页面‘) print(‘5.进入日记页面‘) print(‘6.进入收藏页面‘) print(‘7.注销账号‘) print(‘8.退出整个程序‘) def get_user_pwd(): ‘‘‘ 获取用户名及密码,加入一个列表中 @return: user_dict 用户名,密码的字典 ‘‘‘ user_dict = {} # 建立用户名,密码的字典,字典的键为用户名,值为密码 with open(settings.username_path, encoding=‘utf-8‘) as f: # 读取包含用户名密码的文件 for line in f: # 按行读取,并把用户名,密码分开,填入字典 line_list = line.strip().split(‘|‘) user_dict[line_list[0].strip()] = line_list[1].strip() return user_dict def registration(): ‘‘‘ 注册操作 @return: ‘‘‘ while 1: registration_name = input(‘请输入用户名(只能含有字母或数字):‘) registration_pwd = input(‘请输入密码(长度6~14个字符):‘) if registration_name.isalnum() and 6 <= len(registration_pwd) <= 14: # 判断输入的用户名是否符合要求 u_dict = get_user_pwd() if registration_name in list(u_dict.keys()): # 用户名存在 print(‘您输入的用户名已存在,请重新输入‘) else: with open(settings.username_path, encoding=‘utf-8‘, mode=‘a‘) as f2: f2.write(registration_name + ‘|‘ + registration_pwd + ‘ ‘) # 符合要求者,添加到用户名密码文件中 break else: print(‘您输入的用户名或密码不正确,请重新输入‘) continue print(‘注册成功‘) # 登录状态字典,用于判断是否有用户已经登录。 login_status_dict = { ‘username‘: None, ‘status‘: False, } def login(): ‘‘‘ 登录操作 @return: ‘‘‘ u_dict = get_user_pwd() count = 1 print(‘请登录‘) while count < 4: # 超过三次登录还未成功,则退出整个程序。 username = input(‘请输入用户名:‘).strip() password = input(‘请输入密码:‘).strip() if username in u_dict.keys() and password == u_dict[username]: # 判断用户名密码是否正确 print(‘登录成功‘) login_status_dict[‘username‘] = username # 修改登录状态字典的,登录用户名。 login_status_dict[‘status‘] = True # 修改登录状态字典的,登录状态。 return True else: print(‘用户名或密码错误‘) count += 1 print(‘用户名密码输入三次均不正确,自动退出程序。‘) return False @common.auth def article(): ‘‘‘ 文章页面 @return: ‘‘‘ while 1: print(f‘欢迎{login_status_dict["username"]}进入文章页面‘) write_art_num = input(‘选择直接写入内容输入1,选择导入md文件输入2,输入B或b返回上一个页面,输入Q或q直接退出:‘).strip() if write_art_num.isdecimal(): # 选择进行的操作 write_art_num = int(write_art_num) if write_art_num == 1: # 进行直接写入操作 article_name = input(‘请输入文件名:‘) article_content = input(‘请输入文件内容:‘) with open(article_name,encoding=‘utf-8‘,mode=‘w‘) as f3: # 直接写入用户输入的内容 f3.write(article_content) elif write_art_num == 2: # 进行md文件写入操作 article_name = input(‘请输入md文件的路径:‘) with open(article_name,encoding=‘utf-8‘,mode=‘r‘) as f4, open(article_name[:-2] + ‘text‘,encoding=‘utf-8‘,mode=‘w‘) as f5: f5.write(f4.read()) # 读取并写入 else: print(‘您输入有误,请重新输入‘) elif write_art_num.upper() == ‘B‘: # 返回上一页面 break elif write_art_num.upper() == ‘Q‘: # 直接退出程序 return return True @common.auth def comment(): ‘‘‘ 评论页面 @return: ‘‘‘ print(f‘欢迎{login_status_dict["username"]}进入评论页面‘) if back_quit(): return True else: return @common.auth def dariy(): ‘‘‘ 日记页面 @return: ‘‘‘ print(f‘欢迎{login_status_dict["username"]}进入日记页面‘) if back_quit(): return True else: return @common.auth def collect(): ‘‘‘ 收藏页面 @return: ‘‘‘ print(f‘欢迎{login_status_dict["username"]}进入收藏页面‘) if back_quit(): return True else: return @common.auth def cancel_login(): ‘‘‘ 注销登录 @return: ‘‘‘ login_status_dict[‘username‘] = None # 把登录状态字典的登录者姓名改为None login_status_dict[‘status‘] = False # 把登录状态改为False print(‘您已注销‘) if back_quit(): return True else: return def back_quit(): ‘‘‘ 返回或直接退出 @return: ‘‘‘ while 1: s_quit = input(‘输入B或b返回上一个页面,输入Q或q直接退出:‘).strip() if s_quit.upper() == ‘B‘: break elif s_quit.upper() == ‘Q‘: return else: print(‘您输入有误请重新输入‘) return True def run(): ‘‘‘ 主函数 @return: ‘‘‘ while 1: table_print() # 打印目录 open_num = input(‘请输入您要进行的操作的序号:‘).strip() # 选择进行的操作 if open_num.isdecimal(): # 判断用户输入的序号是否符合规定 open_num = int(open_num) # 将序号变为int 类型 if open_num == 1: login() # 执行登录操作 elif open_num == 2: registration() # 执行注册操作 elif open_num == 3: if article(): # 进入文章页面 continue else: return elif open_num == 4: if comment(): # 进入评论页面 continue else: return elif open_num == 5: if dariy(): # 进入日记页面 continue else: return elif open_num == 6: if collect(): # 进入收藏页面 continue else: return elif open_num == 7: if cancel_login(): # 进入注销账号页面 continue else: return elif open_num == 8: return else: print(‘您输入有误,请重新输入。‘) else: print(‘您输入有误,请重新输入。‘)
-
db文件夹 ---> 存放文本数据
-
lib文件夹 ---> 存放 common(公共组件):装饰器,日志函数
from core import src def auth(f): ‘‘‘ 判断是否有用户已经登录的装饰器 @param f: 修饰的函数名 @return: inner ‘‘‘ def inner(*args,**kwargs): if src.login_status_dict[‘status‘]: # 如果已有用户登录,则直接运行被修饰函数 ret = f(*args,**kwargs) return ret else: if src.login(): # 如果没有用户登录,则进行登录操作。 ret = f(*args,**kwargs) return ret return inner
-
log文件夹 ---> 存放 日志文件
以上是关于Python之第三十天的努力--软件开发规范的主要内容,如果未能解决你的问题,请参考以下文章