Python实现登录接口的示例代码


Posted in Python onJuly 21, 2017

之前写了Python实现登录接口的示例代码,最近需要回顾,就顺便发到随笔上了

要求:

1.输入用户名和密码

2.认证成功,显示欢迎信息

3.用户名3次输入错误后,退出程序

4.密码3次输入错误后,锁定用户名

Readme:

1.UserList.txt 是存放用户名和密码的文件,格式为:username: password,每行存放一条用户信息

2.LockList.txt 是存放已被锁定用户名的文件,默认为空

3.用户输入用户名,程序首先查询锁定名单 LockList.txt,如果用户名在里面,提示用户被锁定,并退出程序

4.如果用户名不在锁定名单里,程序将查询用户名单 UserList.txt ,如果用户名不在里面,将提示用户不存在,请重新输入,三次输入错误,将退出程序

5.如果用户名在用户名单里,将提示用户输入密码,密码正确,显示欢迎信息;3次输入错误,将锁定此用户名(写入锁定名单)

流程图:

Python实现登录接口的示例代码

代码:

# Joe Young


import os, sys, getpass

os.system('cls')      #调用os模块的system方法传入'cls'参数,清屏

count = 0          #用户名登录次数计数

while count < 3:

  username = input('username:')

  lock_file = open('LockList.txt', 'r+')   #打开LockList.txt文件,权限r+(打开用于读和写文件。文件指针置于该文件的开头)
  lock_list = lock_file.readlines()      #使用readlines()方法逐行读取LockList.txt,生成列表,并赋值给lock_list

  for lock_line in lock_list:
    if username == lock_line.strip('\n'):  #使用strip()方法去掉换行符,判断username是否在LockList.txt
      print('用户名 %s 已被锁定,请联系管理员...' %(username))
      sys.exit(1)             #sys模块的exit()方法表示退出

  with open('UserList.txt', 'r') as user_file:  #打开UserList.txt,权限只读
    user_list = user_file.readlines()      #逐行读取UserList.txt文件,赋值给user_list变量

  for user_line in user_list:
    (user, passwd) = user_line.strip('\n').split(': ') #获取user,passwd的值,用split(': ')实现分割字符串
    if user == username:                #判断用户名是否在UserList.txt文件内
      n = 0                      #密码输入次数计数
      while n < 3:                  #3次输入机会
        password = getpass.getpass('password:')   #使用getpass模块的getpass()方法获取用户输入的密码
        if password == passwd:           #判断密码是否匹配
          print('欢迎 %s 登陆系统!' %(username))
          sys.exit(0)
        else:
          if n != 2:               #n=2时,是最后一次机会,不需要提示还剩下0次机会
            print('密码错误,请重新输入,您还有 %d 次机会\n' %(2-n))
        n += 1                   #密码输入错误,次数+1
      else:
        lock_file.write(username + '\n')      #密码输入错误次数达到3次,把用户名写入LockList.txt文件,锁定用户名
        sys.exit('错误次数过多,用户名已被锁定...')   #程序退出,并输出提示
  else:                          #用户名不存在,执行else语句
    if count != 2:                   #count=2时,是最后一次输入用户名的机会,不用提示还剩下0次机会了
      print('用户名不存在,请重试,您还有 %d 次机会\n' %(2-count))
  count += 1                       #用户名输入错误,count+1

else:                      #用户名输入错误次数达到3次
  sys.exit('输入次数过多,程序已退出...')    #退出程序,并输出提示

lock_file.close()                #关闭LockList.txt文件

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python实现Pig Latin小游戏实例代码
Feb 02 Python
Python Numpy:找到list中的np.nan值方法
Oct 30 Python
浅谈Pycharm调用同级目录下的py脚本bug
Dec 03 Python
python获取磁盘号下盘符步骤详解
Jun 19 Python
python实现控制电脑鼠标和键盘,登录QQ的方法示例
Jul 06 Python
python通过TimedRotatingFileHandler按时间切割日志
Jul 17 Python
Python递归实现打印多重列表代码
Feb 27 Python
简单了解如何封装自己的Python包
Jul 08 Python
Python常用库Numpy进行矩阵运算详解
Jul 21 Python
Python常用外部指令执行代码实例
Nov 05 Python
Python3中PyQt5简单实现文件打开及保存
Jun 10 Python
python机器学习Github已达8.9Kstars模型解释器LIME
Nov 23 Python
centos6.4下python3.6.1安装教程
Jul 21 #Python
Python复数属性和方法运算操作示例
Jul 21 #Python
Python整型运算之布尔型、标准整型、长整型操作示例
Jul 21 #Python
Python双精度浮点数运算并分行显示操作示例
Jul 21 #Python
详解Golang 与python中的字符串反转
Jul 21 #Python
Python随机生成手机号、数字的方法详解
Jul 21 #Python
Python实现将16进制字符串转化为ascii字符的方法分析
Jul 21 #Python
You might like
PHP 抓取网页图片并且另存为的实现代码
2010/03/24 PHP
PHP抓取、分析国内视频网站的视频信息工具类
2014/04/02 PHP
php实现mysql事务处理的方法
2014/12/25 PHP
Apache PHP MySql安装配置图文教程
2016/08/27 PHP
PHP实现验证码校验功能
2017/11/16 PHP
PHP守护进程化在C和PHP环境下的实现
2017/11/21 PHP
PHP实现简单用户登录界面
2019/10/23 PHP
Laravel框架源码解析之反射的使用详解
2020/05/14 PHP
Javascript 检测键盘按键信息及键码值对应介绍
2013/01/03 Javascript
javascript parseInt() 函数的进制转换注意细节
2013/01/08 Javascript
js读写(删除)Cookie实例详解
2013/04/17 Javascript
复选框全选与全不选操作实现思路
2013/08/18 Javascript
js快速排序的实现代码
2013/12/08 Javascript
JavaScript Date对象详解
2016/03/01 Javascript
js两种拼接字符串的简单方法(必看)
2016/09/02 Javascript
JS实现屏蔽网页右键复制及ctrl+c复制的方法【2种方法】
2016/09/04 Javascript
原生js实现可拖拽效果
2017/02/28 Javascript
微信小程序获取手机号授权用户登录功能
2017/11/09 Javascript
jquery写出PC端轮播图实例
2018/01/26 jQuery
vue.js实现图书管理功能
2019/09/24 Javascript
python获取当前运行函数名称的方法实例代码
2017/04/06 Python
Python3.遍历某文件夹提取特定文件名的实例
2018/04/26 Python
python基于FTP实现文件传输相关功能代码实例
2019/09/28 Python
解决pycharm编辑区显示yaml文件层级结构遇中文乱码问题
2020/04/27 Python
Python利用matplotlib绘制折线图的新手教程
2020/11/05 Python
CSS3中的display:grid,网格布局介绍
2019/10/30 HTML / CSS
HTML5之SVG 2D入门13—svg对决canvas及长处和适用场景分析
2013/01/30 HTML / CSS
整理HTML5中表单的常用属性及新属性
2016/02/19 HTML / CSS
萌新的HTML5 入门指南
2020/11/06 HTML / CSS
工厂门卫岗位职责
2013/11/25 职场文书
实习求职信
2013/12/01 职场文书
城市创卫标语
2014/06/17 职场文书
2016年七夕爱情寄语
2015/12/04 职场文书
2016国培研修心得体会
2016/01/08 职场文书
因个人工作失误检讨书
2019/06/21 职场文书
MySQL Server层四个日志的实现
2022/03/31 MySQL