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安装以及IDE的配置教程
Apr 29 Python
Python中的推导式使用详解
Jun 03 Python
Python实现Smtplib发送带有各种附件的邮件实例
Jun 05 Python
Python实现爬取需要登录的网站完整示例
Aug 19 Python
基于python(urlparse)模板的使用方法总结
Oct 13 Python
Django 实现下载文件功能的示例
Mar 06 Python
我喜欢你 抖音表白程序python版
Apr 07 Python
Python使用itchat 功能分析微信好友性别和位置
Aug 05 Python
Pytorch的mean和std调查实例
Jan 02 Python
Python 定义只读属性的实现方式
Mar 05 Python
Django 解决新建表删除后无法重新创建等问题
May 21 Python
Python中 range | np.arange | np.linspace三者的区别
Mar 22 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获取搜索引擎关键字来源的函数(支持百度和谷歌等搜索引擎)
2012/10/03 PHP
WordPress开发中的get_post_custom()函数使用解析
2016/01/04 PHP
PHP设计模式之单例模式原理与实现方法分析
2018/04/25 PHP
php生成word并下载代码实例
2019/03/15 PHP
input 输入框内的输入事件详细分析
2010/03/17 Javascript
基于JQuery的浮动DIV显示提示信息并自动隐藏
2011/02/11 Javascript
js split 的用法和定义 js split分割字符串成数组的实例代码
2012/05/13 Javascript
js解析与序列化json数据(二)序列化探讨
2013/02/01 Javascript
通过JQuery实现win8一样酷炫的动态磁贴效果(示例代码)
2013/07/13 Javascript
详解Javascript 装载和执行
2014/11/17 Javascript
node.js中的buffer.write方法使用说明
2014/12/10 Javascript
jQuery实现两款有动画功能的导航菜单代码
2015/09/16 Javascript
分享15个大家都熟知的jquery小技巧
2015/12/02 Javascript
基于JavaScript实现添加到购物车效果附源码下载
2016/08/22 Javascript
详解React-Native全球化多语言切换工具库react-native-i18n
2017/11/03 Javascript
在vue中添加Echarts图表的基本使用教程
2017/11/22 Javascript
mapboxgl区划标签避让不遮盖实现的代码详解
2020/07/01 Javascript
前端使用crypto.js进行加密的函数代码
2020/08/16 Javascript
[40:55]DOTA2上海特级锦标赛主赛事日 - 2 败者组第二轮#4Newbee VS Fnatic
2016/03/03 DOTA
python实现划词翻译
2020/04/23 Python
python实现sublime3的less编译插件示例
2014/04/27 Python
解决python中遇到字典里key值为None的情况,取不出来的问题
2018/10/17 Python
pytorch使用指定GPU训练的实例
2019/08/19 Python
命令行运行Python脚本时传入参数的三种方式详解
2019/10/11 Python
Python3 socket即时通讯脚本实现代码实例(threading多线程)
2020/06/01 Python
让IE可以变相支持CSS3选择器
2010/01/21 HTML / CSS
CSS3中的display:grid,网格布局介绍
2019/10/30 HTML / CSS
canvas实现按住鼠标移动绘制出轨迹的示例代码
2018/02/05 HTML / CSS
澳大利亚在线百货商店:Real Smart
2017/08/13 全球购物
香港交友网站:be2香港
2018/07/22 全球购物
英国办公家具网站:Furniture At Work
2019/10/07 全球购物
医学专业职业生涯规划范文
2014/02/05 职场文书
小学推普周活动总结
2015/05/07 职场文书
Python快速实现一键抠图功能的全过程
2021/06/29 Python
MySQL系列之十二 备份与恢复
2021/07/02 MySQL
解决MySQL报“too many connections“错误
2022/04/19 MySQL