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的Supervisor进行进程监控以及自动启动
May 29 Python
简单分析Python中用fork()函数生成的子进程
May 04 Python
深入浅析ImageMagick命令执行漏洞
Oct 11 Python
儿童学习python的一些小技巧
May 27 Python
python3中类的继承以及self和super的区别详解
Jun 26 Python
python yield关键词案例测试
Oct 15 Python
pygame库实现移动底座弹球小游戏
Apr 14 Python
python re模块匹配贪婪和非贪婪模式详解
Feb 11 Python
python导入库的具体方法
Jun 18 Python
python中Array和DataFrame相互转换的实例讲解
Feb 03 Python
win10+anaconda安装yolov5的方法及问题解决方案
Apr 29 Python
教你怎么用Python监控愉客行车程
Apr 29 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 chr() ord()中文截取乱码问题解决方法
2008/09/08 PHP
JS与PHP向函数传递可变参数的区别实例代码
2011/05/18 PHP
CI框架中通过hook的方式实现简单的权限控制
2015/01/07 PHP
PHP 实现文件压缩解压操作的方法
2019/06/14 PHP
ASP中用Join和Array,可以加快字符连接速度的代码
2007/08/22 Javascript
JavaScript 节点操作 以及DOMDocument属性和方法
2007/12/06 Javascript
Javascript学习笔记1 数据类型
2010/01/11 Javascript
JQuery学习笔记 nt-child的使用
2011/01/17 Javascript
推荐40个非常优秀的jQuery插件和教程【系列三】
2011/11/09 Javascript
js编码之encodeURIComponent使用介绍(asp,php)
2012/03/01 Javascript
jquery入门—编写一个导航条(可伸缩)
2013/01/07 Javascript
jQuery插件bxSlider实现响应式焦点图
2015/04/12 Javascript
Jquery实现动态切换图片的方法
2015/05/18 Javascript
浅谈JS中逗号运算符的用法
2016/06/12 Javascript
Bootstrap Table从服务器加载数据进行显示的实现方法
2016/09/29 Javascript
关于json字符串与实体之间的严格验证代码
2016/11/10 Javascript
jQuery Ajax使用FormData上传文件和其他数据后端web.py获取
2017/06/11 jQuery
Angular自定义组件实现数据双向数据绑定的实例
2017/12/11 Javascript
Vue表单之v-model绑定下拉列表功能
2019/05/14 Javascript
微信小程序实现录制、试听、上传音频功能(带波形图)
2020/02/27 Javascript
[28:28]Ti4 冒泡赛第二天NEWBEE vs NaVi 2
2014/07/15 DOTA
Python2.x利用commands模块执行Linux shell命令
2016/03/11 Python
python3 遍历删除特定后缀名文件的方法
2018/04/23 Python
python实现猜数字游戏
2020/03/25 Python
python实现用类读取文件数据并计算矩形面积
2020/01/18 Python
Python如何获取文件指定行的内容
2020/05/27 Python
对pytorch中x = x.view(x.size(0), -1) 的理解说明
2021/03/03 Python
Html5嵌入钉钉的实现示例
2020/06/04 HTML / CSS
Auchan Direct波兰:欧尚在线杂货店
2016/10/19 全球购物
英国健康和美容技术产品购物网站:CurrentBody
2019/07/17 全球购物
EJB需直接实现它的业务接口或Home接口吗,请简述理由
2016/11/23 面试题
客服专员岗位职责范本
2013/11/29 职场文书
大课间活动制度
2014/01/18 职场文书
七一党日活动总结
2014/07/08 职场文书
2014年客房部工作总结
2014/11/22 职场文书
七年级写作指导之游记作文
2019/10/07 职场文书