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文件 ...
随机推荐
- AAS代码第2章
[root@node1 aas]# pwd /root/aas [root@node1 aas]# wget http://archive.apache.org/dist/spark/spark-1. ...
- CentOS 5系统安装Django、Apache 、mod_wsgi部署Python环境教程
Django,是一款针对Python环境的WEB开发框架,能够帮助我们构架快捷.简单的WEB框架设置,Django框架非常适合开发内容应用环境,所以在本文中,麦子将整理基于Centos系统部署安装Dj ...
- 将halcon导出的c++程序打包成dll库
1.从“文件”菜单中,选择“新建”,然后选择“项目…”. 2.从“项目类型”窗格中选择“Visual C++”下的“Win32”. 3.从“模板”窗格中,选择“Win32 控制台应用程序”. 4.为 ...
- 场景5 Performance Management
场景5 Performance Management 性能调优(不能重启数据库) 索引 资源管理器 性能优化 统计分析 SQL性能分析 SPM (SQL执行计划管理) 堆表 :数据存储无序 位图索引 ...
- POJ 题目1141 Brackets Sequence(区间DP记录路径)
Brackets Sequence Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 27793 Accepted: 788 ...
- jqGrid属性中文详细说明 (转)
jqGrid的属性很多,其实很大部分的属性,使用其默认值就可以了.但是详细了解一下属性的含义以及作用,对我们定制自己的grid是有帮助的. 以下内容描述格式是:属性名称 参数值类型 描述内容(可 ...
- sql 聚合函数、排序方法详解
聚合函数 count,max,min,avg,sum... select count (*) from T_Employee select Max(FSalary) from T_Employee 排 ...
- php 画图片3
<?php // 中文验证码 // 1. 创建画布 $im = imagecreatetruecolor(200, 200); // 2. 创建背景色 // 2.1得到背景颜色 $bg_colo ...
- Java 验证码工具类
package com.wuyu.util; import java.awt.Color; import java.awt.Font; import java.awt.Graphics; import ...
- mozilla firefox 安装flash player
下载 flash player http://get.adobe.com/cn/flashplayer/ for linux .tar.gz文件 install_flash_player_11_li ...