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中的map、reduce和filter浅析
Apr 26 Python
python中反射用法实例
Mar 27 Python
python实现下载pop3邮件保存到本地
Jun 19 Python
详解flask入门模板引擎
Jul 18 Python
python  创建一个保留重复值的列表的补码
Oct 15 Python
python读取TXT每行,并存到LIST中的方法
Oct 26 Python
从0开始的Python学习016异常
Apr 08 Python
教你如何编写、保存与运行Python程序的方法
Jul 12 Python
Python实现Word表格转成Excel表格的示例代码
Apr 16 Python
python logging通过json文件配置的步骤
Apr 27 Python
python简单利用字典破解zip文件口令
Sep 07 Python
python遍历路径破解表单的示例
Nov 21 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
深入探讨<br />和 \r\n两者有什么区别??
2013/06/05 PHP
PHP环境中Memcache的安装和使用
2015/11/05 PHP
谈谈 PHP7新增功能
2015/12/16 PHP
PHP命名空间与自动加载机制的基础介绍
2019/08/25 PHP
PHP命名空间用法实例分析
2019/09/04 PHP
前端开发部分总结[兼容性、DOM操作、跨域等](持续更新)
2010/03/04 Javascript
JavaScript高级程序设计阅读笔记(十六) javascript检测浏览器和操作系统-detect.js
2012/08/14 Javascript
终于解决了IE8不支持数组的indexOf方法
2013/04/03 Javascript
Javascript闭包用法实例分析
2015/01/23 Javascript
解决jQuery使用JSONP时产生的错误
2015/12/02 Javascript
javascript HTML5 canvas实现打砖块游戏
2020/06/18 Javascript
three.js快速入门【推荐】
2017/01/21 Javascript
微信小程序-横向滑动scroll-view隐藏滚动条
2017/04/20 Javascript
JS模拟超市简易收银台小程序代码解析
2017/08/18 Javascript
深入剖析Express cookie-parser中间件实现示例
2018/02/01 Javascript
layui 优化button按钮和弹出框的方法
2018/08/15 Javascript
jQuery实现鼠标拖拽登录框移动效果
2020/09/13 jQuery
[02:52]DOTA2新手基础教程 米波
2014/01/21 DOTA
Python基于动态规划算法计算单词距离
2015/07/25 Python
python中的字典操作及字典函数
2018/01/03 Python
python 用for循环实现1~n求和的实例
2019/02/01 Python
python实现顺时针打印矩阵
2019/03/02 Python
Python 多个图同时在不同窗口显示的实现方法
2019/07/07 Python
Django使用消息提示简单的弹出个对话框实例
2019/11/15 Python
pycharm激活码免费分享适用最新pycharm2020.2.3永久激活
2020/11/25 Python
全球领先美式家具品牌:Ashley爱室丽家居
2017/08/07 全球购物
小学生期末评语大全
2014/04/21 职场文书
实习协议书范本
2014/04/22 职场文书
法律顾问服务方案
2014/05/15 职场文书
社保委托书怎么写
2014/08/02 职场文书
2015年庆祝国庆节66周年演讲稿
2015/07/30 职场文书
2016企业先进集体事迹材料
2016/02/25 职场文书
Django一小时写出账号密码管理系统
2021/04/29 Python
解决mysql问题:由于找不到MSVCR120.dll,无法继续执行代码
2021/06/26 MySQL
使用ORM新增数据在Mysql中的操作步骤
2021/07/26 MySQL
python数据可视化JupyterLab实用扩展程序Mito
2021/11/20 Python