import os
import time
login_status={'name': None,'status': False
}
file_None= os.path.exists('test.txt') # 判断用户文件是否存在iffile_None:
passelse:
with open('test.txt', encoding='utf-8', mode='w') asfile_Create:
pass
with open('test.txt', encoding='utf-8', mode='r+') astest:
data=test.read()if len(data) == 0: # 判断文件是否为空
test.write('用户名 密码')
def login(f): # 登录加日志
def inner(*args, **kwargs):
num= 0
while num < 3:if login_status['status']: # 如果status=True则无需验证
with open('log.file', encoding='utf-8', mode='a') aslog_file:
ret= f(*args, **kwargs)
log_file.write('\n{}:{},执行了{}函数'.format(login_status['name'], time.strftime("%Y-%m-%d"), f))returnret # 用来返回一个值退出else:
print('清先登录')
username= input('请输入用户名')
password= input('请输入密码')
with open('test.txt', encoding='utf-8') asf1:for i inf1:
new_list=i.strip().split() # 重文件中取出值以逗号分割 转换成listif username == new_list[0] and password == new_list[1]: # 判断用户以及密码
login_status['name'] =username
login_status['status'] =True # 为True时由上调用函数break
else:
num+= 1print('输入用户名或密码错误还有{}次机会'.format(3 -num))continue
else:
print('输入次数太多了请先注册。。。')returninner
def register(): # 注册
flag=Truewhileflag:
register_name= input('输入你注册的用户名')
register_pass= input('输入你注册的密码')
with open('test.txt', encoding='utf-8', mode='r') asfile1:for i infile1:
new_list2=i.strip().split()if register_name == new_list2[0]: # 判断注册的用户是否存在
print('用户已存在')break# 如果存在退出else:
with open('test.txt', encoding='utf-8', mode='a') asfile2:
file2.write('\n' + register_name + ' ') # 不存在则添加
file2.write(register_pass)
file2.close()
print('注册成功')break@login
def login_success():
print('欢迎来到登录界面')
@login
def article():
print('欢迎来到文章界面')
@login
def diary():
print('欢迎来到日记界面')
@login
def comment():
print('欢迎来到评论界面')
@login
def Collection():
print('欢迎来到收藏界面')
def Cancellation():
print('成功注销')
login_status['name'] =None
login_status['status'] =False
def byebye():
print('成功退出')returnexit()
dic= {1: login_success,2: register,3: article,4: diary,5: comment,6: Collection,7: Cancellation,8: byebye} # 把函数名定义成字典方便后面调用whileTrue:
str= '''##########欢迎来到博客园首页###########
1: {}2: {}3: {}4: {}5: {}6: {}7: {}8: {}'''.format('请登录','请注册','文章页面','日记页面','评论页面','收藏页面','注销','退出程序')
print(str)
Choice= input('输入你的选择')if Choice == '1':
passifChoice.isdigit():if '0' < Choice < '9':
dic[int(Choice)]()else:
print('输入超出范围,重新输入')else:
print('输入为非法字符')