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异常处理慎用“except:pass”建议
Apr 02 Python
Python多线程编程(三):threading.Thread类的重要函数和方法
Apr 05 Python
python简单实现基数排序算法
May 16 Python
Django中模型Model添加JSON类型字段的方法
Jun 17 Python
Python中常见的数据类型小结
Aug 29 Python
python3 读写文件换行符的方法
Apr 09 Python
python通过微信发送邮件实现电脑关机
Jun 20 Python
python 自定义异常和异常捕捉的方法
Oct 18 Python
python读取图片任意范围区域
Jan 23 Python
python三方库之requests的快速上手
Mar 04 Python
PyCharm Anaconda配置PyQt5开发环境及创建项目的教程详解
Mar 24 Python
如何使用PyCharm及常用配置详解
Jun 03 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 Ajax实现页面无刷新发表评论
2007/01/02 PHP
Linux下将excel数据导入到mssql数据库中的方法
2010/02/08 PHP
解析php addslashes()与addclashes()函数的区别和比较
2013/06/24 PHP
解析PHP跳出循环的方法以及continue、break、exit的区别介绍
2013/07/01 PHP
PHP连接access数据库
2015/03/27 PHP
PHP实现多图上传和单图上传功能
2018/05/17 PHP
javascript 对象比较实现代码
2009/04/27 Javascript
extjs之去除s.gif的影响
2010/12/25 Javascript
Jquery为a标签的href赋值实现代码
2013/05/03 Javascript
jQuery浏览器CSS3特写兼容实例
2015/01/19 Javascript
异步JavaScript编程中的Promise使用方法
2015/07/28 Javascript
jQuery中ajax的load()与post()方法实例详解
2016/01/05 Javascript
jQuery实现本地预览上传图片功能
2016/01/08 Javascript
分享10个优化代码的CSS和JavaScript工具
2016/05/11 Javascript
Laravel中常见的错误与解决方法小结
2016/08/30 Javascript
BootStrap glyphicon图标无法显示的解决方法
2016/09/06 Javascript
JS产生随机数的用法小结
2016/12/10 Javascript
AngularJS指令与控制器之间的交互功能示例
2016/12/14 Javascript
关于不同页面之间实现参数传递的几种方式讨论
2017/02/13 Javascript
vue-cli项目优化方法- 缩短首屏加载时间
2018/04/01 Javascript
webpack4之SplitChunksPlugin使用指南
2018/06/12 Javascript
微信小程序自定义select下拉选项框组件的实现代码
2018/08/28 Javascript
基于js实现逐步显示文字输出代码实例
2020/04/02 Javascript
在python3中pyqt5和mayavi不兼容问题的解决方法
2019/01/08 Python
python虚拟环境模块venv使用及示例
2020/03/04 Python
Python中qutip用法示例详解
2020/10/02 Python
美国成衣女装品牌:CHICO’S
2016/09/19 全球购物
室内设计专业个人的自我评价
2013/10/19 职场文书
技术比武方案
2014/05/19 职场文书
学习张林森心得体会
2014/09/10 职场文书
学校副校长四风对照检查材料整改措施
2014/09/25 职场文书
法学专业毕业实习自我鉴定2014
2014/09/27 职场文书
大雁塔导游词
2015/02/04 职场文书
团员年度个人总结
2015/02/26 职场文书
Canvas绘制像素风图片的示例代码
2021/09/25 HTML / CSS
Android学习之BottomSheetDialog组件的使用
2022/06/21 Java/Android