python实现简单登陆流程的方法


Posted in Python onApril 22, 2018

登陆流程图:

python实现简单登陆流程的方法

代码实现:

#-*- coding=utf-8 -*-
import os,sys,getpass
'''
user.txt 格式
账号 密码 是否锁定 错误次数
jack 123 unlock 0
tom 123 unlock 0
lily 123 unlock 0
hanmeimei 123 unlock 0
lucy 123 unlock 0
'''
# 定义写入文件的函数
def wirte_to_user_file(users,user_file_path):
	user_file = file(user_file_path,'w+')
	for k,v in users.items():
		line = []
		line.append(k)
		line.extend(v)
		user_file.write(' '.join(line)+'\n')
	user_file.close()
# 判断用户文件是否存在,不存在直接退出
user_file_path = 'users.txt'
if os.path.exists(user_file_path):
	user_file = file(user_file_path,'r')
else:
	print 'user file is not exists'
	sys.exit(1)
# 遍历用户文件,将用户包装成字典
users_dic = {}
for user_line in user_file:
	user = user_line.strip().split()
	users_dic[user[0]] = user[1:]
'''
{
	'lucy': ['123', 'unlock', '0'], 
	'lily': ['123', 'unlock', '0'], 
	'jack': ['123', 'unlock', '0'], 
	'hanmeimei': ['123', 'unlock', '0'], 
	'tom': ['123', 'unlock', '0']
}
'''
while True:
	# 输入账号
	input_name = raw_input('please input your username,input "quit" or "q" will be exit : ').strip()
	# 判断是否为退出
	if input_name == 'quit' or input_name == 'q':
		sys.exit(0)
	# 输入密码
	password = getpass.getpass('please input your password:').strip()
	# 判断账号是否存在、是否锁定
	if input_name not in users_dic:
		print 'username or password is not right'
		break
		
	if users_dic[input_name][1] == 'lock':
		print 'user has been locked'
		break
	
	# 判断密码是否正确,正确,登陆成功
	if str(password) == users_dic[input_name][0]:
		print 'login success,welcome to study system'
		sys.exit(0)
	else:
		# 如果密码错误则修改密码错误次数
		users_dic[input_name][2] = str(int(users_dic[input_name][2])+1)
		# 密码错误次数大于3的时候则锁定,并修改状态
		
		if int(users_dic[input_name][2]) >= 3:
			print 'password input wrong has 3 times,user will be locked,please connect administrator'
			users_dic[input_name][1] = 'lock'
			wirte_to_user_file(users_dic,user_file_path)
			break
		
		wirte_to_user_file(users_dic,user_file_path)

以上这篇python实现简单登陆流程的方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python根据开头和结尾字符串获取中间字符串的方法
Mar 26 Python
python实现将汉字转换成汉语拼音的库
May 05 Python
深入浅析Python字符编码
Nov 12 Python
django的登录注册系统的示例代码
May 14 Python
python人民币小写转大写辅助工具
Jun 20 Python
使用pandas模块读取csv文件和excel表格,并用matplotlib画图的方法
Jun 22 Python
在mac下查找python包存放路径site-packages的实现方法
Nov 06 Python
python 实现倒排索引的方法
Dec 25 Python
对Python中class和instance以及self的用法详解
Jun 26 Python
Matplotlib scatter绘制散点图的方法实现
Jan 02 Python
python字符串的index和find的区别详解
Jun 20 Python
Python 防止死锁的方法
Jul 29 Python
Python 实现选择排序的算法步骤
Apr 22 #Python
python学习基础之循环import及import过程
Apr 22 #Python
Python中循环引用(import)失败的解决方法
Apr 22 #Python
Python 数据处理库 pandas进阶教程
Apr 21 #Python
PyQt5 QSerialPort子线程操作的实现
Apr 21 #Python
将python代码和注释分离的方法
Apr 21 #Python
Python基于百度AI的文字识别的示例
Apr 21 #Python
You might like
通过缓存数据库结果提高PHP性能的原理介绍
2012/09/05 PHP
解析strtr函数的效率问题
2013/06/26 PHP
PHP zip扩展Linux下安装过程分享
2014/05/05 PHP
详解PHP中的状态模式编程
2015/08/11 PHP
PHP中引用类型和值类型功能与用法示例
2019/02/26 PHP
PhpStorm 如何优雅的调试Hyperf的方法步骤
2019/11/24 PHP
jquery tab插件精简版分享
2011/09/10 Javascript
jquery中dom操作和事件的实例学习 仿yahoo邮箱登录框的提示效果
2011/11/30 Javascript
JavaScript获取客户端计算机硬件及系统等信息的方法
2014/01/02 Javascript
jQuery获取页面元素绝对与相对位置的方法
2015/06/10 Javascript
javascript实现tab切换的四种方法
2015/11/05 Javascript
jquery常用的12个小功能
2016/07/22 Javascript
详谈js中数组(array)和对象(object)的区别
2017/02/27 Javascript
详解A标签中href=""的几种用法
2017/08/20 Javascript
layui获取选中行数据的实例讲解
2018/08/19 Javascript
在Create React App中使用CSS Modules的方法示例
2019/01/15 Javascript
JavaScript:ES2019 的新特性(译)
2019/08/08 Javascript
使用vscode快速建立vue模板过程详解
2019/10/10 Javascript
js的Object.assign用法示例分析
2020/03/05 Javascript
vue select 获取value和lable操作
2020/08/28 Javascript
python实现堆栈与队列的方法
2015/01/15 Python
Python编程中归并排序算法的实现步骤详解
2016/05/04 Python
python使用fcntl模块实现程序加锁功能示例
2017/06/23 Python
使用Py2Exe for Python3创建自己的exe程序示例
2018/10/31 Python
英国休闲奢华的缩影:Crew Clothing
2019/05/05 全球购物
乌克兰电子产品和家用电器购物网站:TOUCH
2019/08/09 全球购物
写好自荐信的技巧
2013/11/08 职场文书
主管职责范文
2013/11/09 职场文书
大学生找工作推荐信范文
2013/11/28 职场文书
彩色的翅膀教学反思
2014/04/25 职场文书
电子商务专业应届毕业生求职信
2014/06/21 职场文书
爱心捐书活动总结
2014/07/05 职场文书
反对四风自我剖析材料
2014/10/07 职场文书
2014超市收银员工作总结
2014/11/13 职场文书
Redis5之后版本的高可用集群搭建的实现
2021/04/27 Redis
前端实现滑动按钮AJAX与后端交互的示例代码
2022/02/24 Javascript