#!/usr/bin/env python # -*- coding:utf8 -*- import os import sys # userfile = file('user.txt', 'r+') userlist = [] userdict = {} #是否存在用户文件,有的话执行,没有的话退出. if os.path.isfile("user.txt"): pass else: print '没有定义用户文件!' sys.exit #userfile.readlines() for userline in userfile: useritem = userline.strip() #生成系统用户列表 value_useritem = useritem.split(';') #基本判断条件取出 value_username = value_useritem[0].strip() value_passwd = value_useritem[1].strip() lock_value = int(value_useritem[-1]) logincount_value = int(value_useritem[-2]) #生成用户名列表 userdict[value_username] = {'name':value_username, 'pwd':value_passwd, 'lockcount':logincount_value, 'locknum':lock_value} flag = 'Ture' counter = 0 while flag : username = raw_input('请输入用户名:') userpasswd = raw_input('密码:') #判断是否是系统用户 if username not in userdict.keys() : print '没有这个用户!' break; elif userdict[username]['locknum'] == 0 and userdict[username]['lockcount'] < 3 : if userpasswd == userdict[username]['pwd'].strip() : print '欢迎登陆!!' break else: counter += 1 userdict[username]['lockcount'] += 1 userfile = file('user.txt', 'w+') for t in userdict.values(): wuserlist = [str(t['name']), str(t['pwd']), str(t['lockcount']), str(t['locknum'])] # wuserlist = t.values() wuserlist_str = ';'.join(wuserlist) #userfile.seek(0) userfile.write(wuserlist_str + '\n') if counter > 2 : print '密码输入三次错误,退出.' break; else: print '帐户已经被锁定!' sys.exit('请联系管理解锁.') continue; userfile.close()
user.txt
格式:
用户名;密码;错误密码次数;管理员手动锁定账户
talen;tpass;0;0 alex;apass;0;0 bill;bpass;0;1
执行过程:
输入系统列表中没有的用户名与密码
[t@bjb0541 python]$ ./day11.py
请输入用户名:nobody
密码:nobody
没有这个用户!
输入系统列表中被管理员手工禁用的账户
[t@bjb0541 python]$ ./day11.py
请输入用户名:bill
密码:bpass
帐户已经被锁定!
请联系管理解锁.
系统用户密码输入错误3次,锁定账户
[t@bjb0541 python]$ ./day11.py
请输入用户名:talen
密码:error
请输入用户名:talen
密码:error2
请输入用户名:talen
密码:error3
密码输入三次错误,退出.
[t@bjb0541 python]$ ./day11.py
请输入用户名:talen
密码:tpass
帐户已经被锁定!
请联系管理解锁.
系统用户正常登陆
[t@bjb0541 python]$ ./day11.py
请输入用户名:alex
密码:apass
欢迎登陆!!
系统用户配置已经更新.
[t@bjb0541 python]$ cat user.txt
bill;bpass;0;1
alex;apass;0;0
talen;tpass;3;0