python 模拟用户登录代码

时间:2023-03-09 08:50:09
python 模拟用户登录代码

需求:输入用户名,判断用户是否被锁定,锁定则退出,否则进入密码验证,输入三次错误密码之后此用户被锁定。

python 模拟用户登录代码

userlist.txt里,用":"将用户名、密码、状态码分开:

[root@o2-test ~]# cat userlist.txt
张三:123:0
李四:456:0
admin:123:0
qqq:123:0

代码:

 #!/usr/bin/env python
# -*- coding=utf-8 -*-
__author__ = 'gmk' import sys
import fileinput
import getpass #打开用户列表, 只读
fileinfo = file('userlist.txt','r')
user_file = fileinfo.readlines()
fileinfo.close() #定义字典 {'张三':['123','1'],...}
userdict = {}
for line in user_file:
# userinfo = ['张三','123','0']
userinfo = line.strip().split(":")
# userdict['张三'] = []
userdict[userinfo[0]] = [userinfo[1],userinfo[2]] #验证用户名
def verify_user(inputname):
#用户名为空
if inputname == '':
inputname = raw_input('用户名不能为空,请输入用户名:').strip()
verify_user(inputname)
#用户名不存在
elif inputname not in userdict:
inputname = raw_input('用户不存在,请重新输入用户名:').strip()
verify_user(inputname)
else:
#用户名正确,判断是否锁定
if userdict[inputname][1] == '':
print '此用户已锁定,请联系管理员!'
sys.exit()
else:
#用户未锁定,进入密码判断
print '用户名正确!'
verify_pwd(inputname) #验证密码
def verify_pwd(okname):
pwdinfo = getpass.getpass('请输入密码:').strip()
i = 2
while True:
if pwdinfo == userdict[okname][0]:
print '%s 欢迎回来!' % okname
sys.exit()
elif pwdinfo == '':
pwdinfo = getpass.getpass('密码不能为空,请输入密码:').strip()
else:
if i > 0:
pwdinfo = getpass.getpass("密码错误,您还有 %d 次机会,请重新输入密码:" %i)
i -= 1
else:
update_file(okname)
print '密码输入超过三次,用户被锁定!'
sys.exit() #更新文件内容,锁定用户
def update_file(okname):
#旧的字符串 admin:123456:0
old_str = ':'.join([okname,userdict[okname][0],str(userdict[okname][1])])
#设置锁定标识
userdict[okname][1] = 1
#新的字符串 admin:123456:1
new_str = ':'.join([okname,userdict[okname][0],str(userdict[okname][1])]) #替换用户状态信息
for line in fileinput.input('userlist.txt',inplace=1):
print line.strip().replace(old_str,new_str)
fileinput.close() user_input = raw_input('欢迎使用员工后台系统!请输入用户名:').strip()
verify_user(user_input)

运行结果:

 [root@o2-test ~]# python login.py
欢迎使用员工后台系统!请输入用户名:
用户名不能为空,请输入用户名:qweqwerqwer
用户不存在,请重新输入用户名:qqq
用户名正确!
请输入密码:
密码不能为空,请输入密码:
密码错误,您还有 2 次机会,请重新输入密码:
密码不能为空,请输入密码:
密码不能为空,请输入密码:
密码错误,您还有 1 次机会,请重新输入密码:
密码输入超过三次,用户被锁定!
[root@o2-test ~]# python login.py
欢迎使用员工后台系统!请输入用户名:qqq
此用户已锁定,请联系管理员!
[root@o2-test ~]# python login.py
欢迎使用员工后台系统!请输入用户名:admin
用户名正确!
请输入密码:
admin 欢迎回来!

userlist.txt结果:

 [root@o2-test ~]# cat userlist.txt
张三::
李四::
admin::
qqq::