标签:
需求:输入用户名,判断用户是否被锁定,锁定则退出,否则进入密码验证,输入三次错误密码之后此用户被锁定。
userlist.txt里,用":"将用户名、密码、状态码分开:
[root@o2-test ~]# cat userlist.txt 张三:123:0 李四:456:0 admin:123:0 qqq:123:0
代码:
1 #!/usr/bin/env python 2 # -*- coding=utf-8 -*- 3 __author__ = ‘gmk‘ 4 5 import sys 6 import fileinput 7 import getpass 8 9 #打开用户列表, 只读 10 fileinfo = file(‘userlist.txt‘,‘r‘) 11 user_file = fileinfo.readlines() 12 fileinfo.close() 13 14 #定义字典 {‘张三‘:[‘123‘,‘1‘],...} 15 userdict = {} 16 for line in user_file: 17 # userinfo = [‘张三‘,‘123‘,‘0‘] 18 userinfo = line.strip().split(":") 19 # userdict[‘张三‘] = [] 20 userdict[userinfo[0]] = [userinfo[1],userinfo[2]] 21 22 23 #验证用户名 24 def verify_user(inputname): 25 #用户名为空 26 if inputname == ‘‘: 27 inputname = raw_input(‘用户名不能为空,请输入用户名:‘).strip() 28 verify_user(inputname) 29 #用户名不存在 30 elif inputname not in userdict: 31 inputname = raw_input(‘用户不存在,请重新输入用户名:‘).strip() 32 verify_user(inputname) 33 else: 34 #用户名正确,判断是否锁定 35 if userdict[inputname][1] == ‘1‘: 36 print ‘此用户已锁定,请联系管理员!‘ 37 sys.exit() 38 else: 39 #用户未锁定,进入密码判断 40 print ‘用户名正确!‘ 41 verify_pwd(inputname) 42 43 44 #验证密码 45 def verify_pwd(okname): 46 pwdinfo = getpass.getpass(‘请输入密码:‘).strip() 47 i = 2 48 while True: 49 if pwdinfo == userdict[okname][0]: 50 print ‘%s 欢迎回来!‘ % okname 51 sys.exit() 52 elif pwdinfo == ‘‘: 53 pwdinfo = getpass.getpass(‘密码不能为空,请输入密码:‘).strip() 54 else: 55 if i > 0: 56 pwdinfo = getpass.getpass("密码错误,您还有 %d 次机会,请重新输入密码:" %i) 57 i -= 1 58 else: 59 update_file(okname) 60 print ‘密码输入超过三次,用户被锁定!‘ 61 sys.exit() 62 63 #更新文件内容,锁定用户 64 def update_file(okname): 65 #旧的字符串 admin:123456:0 66 old_str = ‘:‘.join([okname,userdict[okname][0],str(userdict[okname][1])]) 67 #设置锁定标识 68 userdict[okname][1] = 1 69 #新的字符串 admin:123456:1 70 new_str = ‘:‘.join([okname,userdict[okname][0],str(userdict[okname][1])]) 71 72 #替换用户状态信息 73 for line in fileinput.input(‘userlist.txt‘,inplace=1): 74 print line.strip().replace(old_str,new_str) 75 fileinput.close() 76 77 78 user_input = raw_input(‘欢迎使用员工后台系统!请输入用户名:‘).strip() 79 verify_user(user_input)
运行结果:
1 [root@o2-test ~]# python login.py 2 欢迎使用员工后台系统!请输入用户名: 3 用户名不能为空,请输入用户名:qweqwerqwer 4 用户不存在,请重新输入用户名:qqq 5 用户名正确! 6 请输入密码: 7 密码不能为空,请输入密码: 8 密码错误,您还有 2 次机会,请重新输入密码: 9 密码不能为空,请输入密码: 10 密码不能为空,请输入密码: 11 密码错误,您还有 1 次机会,请重新输入密码: 12 密码输入超过三次,用户被锁定! 13 [root@o2-test ~]# python login.py 14 欢迎使用员工后台系统!请输入用户名:qqq 15 此用户已锁定,请联系管理员! 16 [root@o2-test ~]# python login.py 17 欢迎使用员工后台系统!请输入用户名:admin 18 用户名正确! 19 请输入密码: 20 admin 欢迎回来!
userlist.txt结果:
1 [root@o2-test ~]# cat userlist.txt 2 张三:123:0 3 李四:456:0 4 admin:123:0 5 qqq:123:1
标签:
原文地址:http://www.cnblogs.com/mkuu/p/4953147.html