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中split方法用法分析
Apr 17 Python
Python实现七彩蟒蛇绘制实例代码
Jan 16 Python
详解python while 函数及while和for的区别
Sep 07 Python
python matplotlib画图库学习绘制常用的图
Mar 19 Python
Django使用模板后无法找到静态资源文件问题解决
Jul 19 Python
Django admin.py 在修改/添加表单界面显示额外字段的方法
Aug 22 Python
python3使用print打印带颜色的字符串代码实例
Aug 22 Python
python或C++读取指定文件夹下的所有图片
Aug 31 Python
python matplotlib中的subplot函数使用详解
Jan 19 Python
深度学习入门之Pytorch 数据增强的实现
Feb 26 Python
Python小白学习爬虫常用请求报头
Jun 03 Python
使用Python中tkinter库简单gui界面制作及打包成exe的操作方法(二)
Oct 12 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
2019十大人气国漫
2020/03/13 国漫
初学者入门:细述PHP4的核心Zend
2006/09/05 PHP
redis 队列操作的例子(php)
2012/04/12 PHP
解析php addslashes()与addclashes()函数的区别和比较
2013/06/24 PHP
php下载excel无法打开的解决方法
2013/12/24 PHP
php实现的树形结构数据存取类实例
2014/11/29 PHP
php实现博客,论坛图片防盗链的方法
2016/10/15 PHP
php微信开发之关注事件
2018/06/14 PHP
js 浏览器事件介绍
2012/03/30 Javascript
关闭ie窗口清除Session的解决方法
2014/01/10 Javascript
jQuery中:header选择器用法实例
2014/12/29 Javascript
同一个网页中实现多个JavaScript特效的方法
2015/02/02 Javascript
不想让浏览器运行javascript脚本的方法
2015/11/20 Javascript
Bootstrap3.0学习教程之JS折叠插件
2016/05/27 Javascript
Node.js与MySQL交互操作及其注意事项
2016/10/05 Javascript
微信小程序下拉刷新界面的实现
2017/09/28 Javascript
vue.js提交按钮时进行简单的if判断表达式详解
2018/08/08 Javascript
利用d3.js制作连线动画图与编辑器的方法实例
2019/09/05 Javascript
Vue.js如何使用Socket.IO的示例代码
2019/09/05 Javascript
原生js基于canvas实现一个简单的前端截图工具代码实例
2019/09/10 Javascript
swiper自定义分页器的样式
2020/09/14 Javascript
[01:33:30]DOTA2-DPC中国联赛 正赛 RNG vs Phoenix BO3 第二场 2月5日
2021/03/11 DOTA
解决python中os.listdir()函数读取文件夹下文件的乱序和排序问题
2018/10/17 Python
Python对ElasticSearch获取数据及操作
2019/04/24 Python
解决pyinstaller打包发布后的exe文件打开控制台闪退的问题
2019/06/21 Python
Python面向对象之Web静态服务器
2019/09/03 Python
python 正则表达式参数替换实例详解
2020/01/17 Python
matplotlib grid()设置网格线外观的实现
2021/02/22 Python
人力资源主管职责范本
2014/03/05 职场文书
护士毕业实习感言
2014/03/05 职场文书
vue3如何优雅的实现移动端登录注册模块
2021/03/29 Vue.js
在python中实现导入一个需要传参的模块
2021/05/12 Python
Java详细解析==和equals的区别
2022/04/07 Java/Android
宝塔更新Python及Flask项目的部署
2022/04/11 Python
Win11 PC上的Outlook搜索错误怎么办?
2022/07/15 数码科技
详解flex:1什么意思
2022/07/23 HTML / CSS