用户登录 解除锁定等操作
用户登录 修改为函数方法:
2个文件一个存放用户及密码,一个存被锁定账户
主要涉及到 检查用户是否被锁操作、锁定用户操作、
1.主函数 输入用户名
2.验证用户,调用是否被锁定操作,如果被锁定直接退出
3.没有被锁定继续匹配账户 及密码,限制用户输入账户次数,超过退出
4.用户名匹配,验证用户密码,超过3次锁定,调用锁定用户操作
1 import sys 2 def lock(name): # 锁账户函数 3 with open('user_lock.txt', 'a+') as lock_file: 4 lock_file.write(name+'\n' ) # 密码输入三次错误后,将该用户追加到LOCK文件 5 sys.exit('用户 %s 达到最大登录次数,将被锁定并退出' % name) 6 7 def check_name(name): #检查用户名是否被锁 8 with open('user_lock.txt', 'r') as lock_file: # 当用户输入用户名后,打开LOCK 文件 以检查是否此用户已经LOCK了 9 lock_list = lock_file.readlines() 10 for lock_line in lock_list: # 循环LOCK文件 11 lock_line = lock_line.strip('\n') # 去掉换行符 12 if name == lock_line: # 如果LOCK了就直接退出 13 sys.exit('用户 %s 已经被锁定,退出' % name) #退出整个程序并打印 14 def main(): 15 i = 0 #记录次数 16 while i < 3: # 只要用户登录异常不超过3次就不断循环 17 name = input("请输入用户名:") 18 check_name(name) 19 with open('user.txt','r') as user_file: 20 user_list = user_file.readlines() 21 for user_line in user_list: # 对帐号文件进行遍历 22 (user, password) = user_line.strip().split() # 分别获取帐号和密码信息 23 if name == user: # 如用户名正常匹配 24 j = 0 25 while j < 3: # 只要用户密码异常不超过3次就不断循环 26 passwd = input('请输入密码:') # 输入隐藏密码 27 if passwd == password: # 密码正确,提示欢迎登录 28 print('欢迎登录管理平台,用户%s' % name) 29 sys.exit(0) # 正常退出 30 else: 31 if j != 2: # j=2时,是最后一次机会,不用在提示还剩余0次机会了 32 print('用户 %s 输入密码错误,请重新输入,还有 %d 次机会' % (name, 2 - j)) 33 j += 1 # 密码输入错误后,循环值增加1 34 else: 35 lock(name) #调用锁定用户账户 36 else: 37 pass # 当用户没匹配时,跳过并继续循环 38 else: 39 if i != 2: # i=2时,是最后一次机会,不用在提示还剩余0次机会了 40 print('用户 %s 不存在,请重新输入,还有 %d 次机会' % (name, 2 - i)) 41 i += 1 # 当用户输入错误时,循环值增加1 42 else: 43 sys.exit('用户 %s 不存在,退出' % name) # 用户输入三次错误后,异常退出 44 45 if __name__=='__main__': 46 main()
后续
用户锁定后 需要解锁用户
1、检查输入账户是否被锁定
2、如果被锁定则需要删除此账号解锁
def check_name(name): #检查用户名是否被锁 with open('user_lock.txt', 'r') as lock_file: # 当用户输入用户名后,打开LOCK 文件 以检查是否此用户已经LOCK了 lock_list = lock_file.readlines() for lock_line in lock_list: # 循环LOCK文件 lock_line = lock_line.strip('\n') # 去掉换行符 if name == lock_line: # 如果LOCK了 choice = input("用户%s被锁定,需要解锁么:"%name) if choice == 'y': unlock(name) break else: print('用户%s没有被解锁!'%name) break else: print('用户%s没有被锁定'%name) def unlock(name): with open('user_lock.txt', 'r') as lock_file: lines = lock_file.readlines() with open('user_lock.txt', 'w') as user_lock: for l in lines: if name in l: #这里用in 不能适用== 否则最后一个无法删除 continue user_lock.write(l) def main(): name = str(input("请输入解锁账号:")) check_name(name) if __name__== "__main__": main()