python第十七天
软件开发规范
bin starts 启动文件
conf settings 配置文件
core src 主逻辑课
db register 文本数据
lib common 公共组件:装饰器,日志函数
log access.log 日志文件
import sys import os print(__file__)#获取本文件路径 print(os.path.dirname(__file__))获取本文件父路径 print(os.path.dirname(os.path.dirname(__file__)))+1 # import src # 直接引用不到,他不在内存,内置,sys.path ''' # 这么做虽然实现,但是有问题: # 1, 项目中的这些py文件,肯定会互相引用,src 引用 settings, src 引用 commom.py..... import sys sys.path.append(r'D:\python_22\day18\blog\core') sys.path.append(r'D:\python_22\day18\blog\conf') sys.path.append(r'D:\python_22\day18\blog\lib') ....... print(sys.path) import src src.run() # 上面肯定是不行,low,我不能一个一个添加. ''' # import sys # # 我直接添加blog的目录 # sys.path.append(r'D:\python_22\day18\blog') # from core import src # # print(sys.path) # src.run() ''' # 问题2: 此项目 在我的计算机中 他的路径D:\python_22\day18\blog 写死了. # 动态的获取blog的路径 无论在谁的计算机中,都可以找到blog的绝对路径. import sys # 我直接添加blog的目录 sys.path.append(r'D:\python_22\day18\blog') from core import src # print(sys.path) src.run() ''' # import sys # import os # print(__file__) #动态获取本文件的绝对路径 # print(os.path.dirname(__file__)) # 获取父级的目录 # print(os.path.dirname(os.path.dirname(__file__))) # 获取爷级的目录 D:/python_22/day18/blog #################### 以上是思路 import os import sys BASE_PATH = os.path.dirname(os.path.dirname(__file__)) sys.path.append(BASE_PATH) from core import src if __name__ == '__main__': src.run()
博客园
''' 作业:用代码模拟博客园系统。 项目分析: 一.首先程序启动,页面显示下面内容供用户选择: 1.请登录 2.请注册 3.进入文章页面 4.进入评论页面 5.进入日记页面 6.进入收藏页面 7.注销账号 8.退出整个程序 二.必须实现的功能: 1.注册功能要求: a.用户名、密码要记录在文件中。 b.用户名要求:只能含有字母或者数字不能含有特殊字符并且确保用户名唯一。 c.密码要求:长度要在6~14个字符之间。 d.超过三次登录还未成功,则退出整个程序。 2.登录功能要求: a.用户输入用户名、密码进行登录验证。 b.登录成功之后,才可以访问3~7选项,如果没有登录或者登录不成功时访问3~7选项,不允许访问,让其先登录。(装饰器) 3.进入文章页面要求: a.提示欢迎xx进入文章页面。 b.此时用户可以选择:直接写入内容,还是导入md文件。 ①如果选择直接写内容:让学生直接写文件名|文件内容......最后创建一个文章。 ②如果选择导入md文件:让用户输入已经准备好的md文件的文件路径(相对路径即可:比如函数的进阶.md),然后将此md文件的全部内容写入文章(函数的进阶.text)中。 4.进入评论页面要求: 提示欢迎xx进入评论页面。 5.进入日记页面要求: 提示欢迎xx进入日记页面。 6.进入收藏页面要求: 提示欢迎xx进入收藏页面。 7.注销账号要求: 不是退出整个程序,而是将已经登录的状态变成未登录状态(访问3~7选项时需要重新登录)。 8.退出整个程序要求: 就是结束整个程序。 ''' status_dict = { 'username': None, 'status': False, } register_path = r'D:\python_22\day18\blog\register' def get_user_pwd(): user_dict = {} with open(register_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 login(): u_dict = get_user_pwd() count = 1 while count < 4: username = input('请输入用户名:').strip() password = input('请输入密码:').strip() if username in u_dict and password == u_dict[username]: print('登录成功') status_dict['username'] = username status_dict['status'] = True return True else: print('用户名密码错误....重新登录') count += 1 def register(): pass def auth(f): ''' 你的装饰器完成:访问被装饰函数之前,写一个三次登录认证的功能。 登录成功:让其访问被装饰得函数,登录没有成功,不让访问。 :param f: :return: ''' def inner(*args,**kwargs): '''访问函数之前的操作,功能''' if status_dict['status']: ret = f(*args,**kwargs) '''访问函数之后的操作,功能''' return ret else: if login(): ret = f(*args, **kwargs) return ret return inner @auth # article = auth(article) def article(): print('欢迎访问文章页面') @auth def comment(): print('欢迎访问评论页面') @auth def dariy(): print('欢迎访问日记页面') @auth def collections(): print('欢迎访问收藏页面') def login_out(): pass def _quit(): pass # 下面写法不好 # while 1: # print(''' # 1.请登录 # 2.请注册 # 3.进入文章页面 # 4.进入评论页面 # 5.进入日记页面 # 6.进入收藏页面 # 7.注销账号 # 8.退出整个程序 # ''') # num = input('请输入序号:').strip() # if num == '1': # login() # elif num == '2': # register() dic = { 1: login, 2: register, 3: article, 4: comment, 5: dariy, 6: collections, 7: login_out, 8: _quit, } def run(): while 1: print(''' 1.请登录 2.请注册 3.进入文章页面 4.进入评论页面 5.进入日记页面 6.进入收藏页面 7.注销账号 8.退出整个程序 ''') num = input('请输入选项').strip() num = int(num) dic[num]() run()
来源:https://www.cnblogs.com/styxr/p/12178316.html