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中enumerate的用法实例解析
Aug 18 Python
从Python程序中访问Java类的简单示例
Apr 20 Python
python实现文件快照加密保护的方法
Jun 30 Python
Python基于动态规划算法解决01背包问题实例
Dec 06 Python
Python方法的延迟加载的示例代码
Dec 18 Python
python @property的用法及含义全面解析
Feb 01 Python
python OpenCV学习笔记实现二维直方图
Feb 08 Python
python算法题 链表反转详解
Jul 02 Python
Python利用PyExecJS库执行JS函数的案例分析
Dec 18 Python
python 画图 图例自由定义方式
Apr 17 Python
python语言中pandas字符串分割str.split()函数
Aug 05 Python
python+pyhyper实现识别图片中的车牌号思路详解
Dec 24 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如何编写易读的代码
2007/07/10 PHP
PHP读取目录下所有文件的代码
2008/01/07 PHP
PHP Mysql编程之高级技巧
2008/08/27 PHP
php自动加载的两种实现方法
2010/06/21 PHP
Yii2汉字转拼音类的实例代码
2017/04/18 PHP
formvalidator验证插件中有关ajax验证问题
2013/01/04 Javascript
jQuery中RadioButtonList的功能及用法实例介绍
2013/08/23 Javascript
javascript数据类型示例分享
2015/01/19 Javascript
跟我学习JScript的Bug与内存管理
2015/11/18 Javascript
浅谈在js传递参数中含加号(+)的处理方式
2016/10/11 Javascript
javascript 正则表达式去空行方法
2017/01/24 Javascript
JQuery中Ajax的操作完整例子
2017/03/07 Javascript
教你使用vue-cli快速构建的小说阅读器
2019/05/13 Javascript
vue 开发企业微信整合案例分析
2019/12/02 Javascript
Jquery属性的获取/设置及样式添加/删除操作技巧分析
2019/12/23 jQuery
VUE中V-IF条件判断改变元素的样式操作
2020/08/09 Javascript
一文秒懂nodejs中的异步编程
2021/01/28 NodeJs
Python性能优化技巧
2015/03/09 Python
Python使用shelve模块实现简单数据存储的方法
2015/05/20 Python
Pycharm学习教程(5) Python快捷键相关设置
2017/05/03 Python
详解Django的CSRF认证实现
2018/10/09 Python
Python图像处理之直线和曲线的拟合与绘制【curve_fit()应用】
2018/12/26 Python
numpy ndarray 按条件筛选数组,关联筛选的例子
2019/11/26 Python
numpy实现神经网络反向传播算法的步骤
2019/12/24 Python
scrapy处理python爬虫调度详解
2020/11/23 Python
CSS3 创建网页动画实现弹跳球动效果
2018/10/30 HTML / CSS
使用HTML5 Canvas绘制圆角矩形及相关的一些应用举例
2016/03/22 HTML / CSS
英国第一的购买便宜玩具和游戏的在线购物网站:Bargain Max
2018/01/24 全球购物
联想智利官方网站:Lenovo Chile
2020/06/03 全球购物
软件测试有哪些?什么是配置项?
2012/02/12 面试题
预备党员党课思想汇报
2014/01/13 职场文书
新学期开学寄语
2014/01/18 职场文书
5s标语大全
2014/06/23 职场文书
2015年污水处理厂工作总结
2015/05/26 职场文书
Django 实现jwt认证的示例
2021/04/30 Python
GoFrame gredis缓存DoVar Conn连接对象 自动序列化GoFrame gredisDo/DoVar方法Conn连接对象自动序列化/反序列化总结
2022/06/14 Golang