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::
python 模拟用户登录代码的更多相关文章
- Python模拟用户登录场景
简单模拟登录场景,将已知的用户名及密码固化,通过用户输入内容和已固化的内容比较进行判断用户名和密码是否输入正确. 在用户输入时,将密码隐藏需要导入模块getpass import getpass _u ...
- Python模拟用户登录
# coding=utf8 import hashlib db = { 'michael':'e10adc3949ba59abbe56e057f20f883e', 'bob':'878ef96e861 ...
- python 初学习 模拟用户登录
#!/usr/bin/env python#coding:utf-8''' 2017年8月19日 模拟用户登录,userfile 文件保存字典 用户名,和密码 sorryname 文件保存字典 登录过 ...
- 模拟用户登录含注册——python第8天
print('欢迎登录尚雅梦想python学习系统'.center(30)) print('******' * 8) flag = True while flag: order = input(''' ...
- python小练习--模拟用户登录,(3次重试机会,登录成功展示登录账号密码)
知识点使用:1.格式化输出的两种方法---% .formate 2.while循环的使用,及跳出循环的两种方法---break(跳出循环体).continue(结束本次循环,继续下次循环) 3.if条 ...
- python用scrapy模拟用户登录
scrapy模拟登录 关注公众号"轻松学编程"了解更多. 注意:模拟登陆时,必须保证settings.py里的COOKIES_ENABLED(Cookies中间件) 处于开启状态 ...
- 用python连接数据库模拟用户登录
使用pycharm下载pymysql库,在终端输入命令: pip install mysql 使用pycharm写登入操作前需要在数据库内添加一些数据,比如用户名和密码 create database ...
- 利用Python模拟GitHub登录
最近学习了Fiddler抓包工具的简单使用,通过抓包,我们可以抓取到HTTP请求,并对其进行分析.现在我准备尝试着结合Python来模拟GitHub登录. Fiddler抓包分析 首先,我们想要模拟一 ...
- python实现用户登录、注册实例
python面向函数式编程,模拟用户登录验证.注册的代码实现. 主要有以下两个文件: 1.user.txt文档文件,相当于数据库的用户信息表,主要是记录用户名和密码. 注意:1)此文档需要与.py文件 ...
随机推荐
- JAVA 中文转GBK内码方法
不能谷歌,百度了很久,没有直接的转换方法,参考 byte[]数组与十六进制字符串与字符串的互相转换 http://blog.163.com/roadwalker@126/blog/static/113 ...
- C语言中内存对齐
今天一考研同学问我一个问题,一个结构体有一个int类型成员和一个char类型成员,问我这个结构体类型占多少个字节,我直接编个程序给他看结果.这个结构体占八个字节,咦,当时我蛮纳闷的,一个int类型四个 ...
- 在一台机器上模拟mongodb分片
首先选择一个目录在其中建立以下2个文件夹:data和log 在data下建立9个文件夹: 其中前3个为配置服务器所在文件夹,按照官网要求,一个集群需要3个config server rs-a-n和rs ...
- NethServer 7.2 RC1,增加深度数据包检测
NethServer 7.2 RC1 "Saltimbocca" 发布了,NethServer是基于CentOS的面向服务器的Linux发行.该产品的主要特性是模块化的设计,这使 ...
- Unity3D 一个较常见的错误信息“rect[2] == rt->GetGLWidth() && rect[3] == rt->GetGLHeight()”
rect[2] == rt->GetGLWidth() && rect[3] == rt->GetGLHeight() 这个错误信息的具体含义我还不太清楚.它出现以后会不停 ...
- unslider.js 实现移动web轮播
unslider.js可以实现轮播,但是在移动端还需要另两个插件. jquery.event.move和jQuery.event.swipe : 下面就是简单的实例: <!doctype htm ...
- 初学Spring
Spring是当今最流行的框架,今天开始,dayday同学要正式开始学习Spring了,加油 以下是一个简单的应用Spring框架的java程序 src\dayday\HelloSpring.java ...
- css中文乱码与替换字符
有时候,我们的css样式表中字体乱码,很诧异.百度谷歌是两个老师,有时jquery博客还上淘宝,那边有现成的代码,看看,发现里面定义全局字体是这样的font:12px/1.5 tahoma,arial ...
- Java的流程控制和C++的异同
Java的流程控制和C++基本相似 现将不同的地方总结一下,以便快速掌握. Java的特殊流程控制的特殊部分: 1.顺序结构 -- 没有区别 2.分之结构 -- 没有区别 3.循环结构 1> ...
- android4.4以上,快捷实现标题栏透明
方法很简单写一个values-v19的文件夹,当安卓版本大于4.4时便会调用该文件夹下的styles.xml文件 结构如图: styles.xml <resources> <!-- ...