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 命令行非阻塞输入的小例子
Sep 27 Python
简单学习Python多进程Multiprocessing
Aug 29 Python
使用Python进行AES加密和解密的示例代码
Feb 02 Python
对Python3中的print函数以及与python2的对比分析
May 02 Python
python通过微信发送邮件实现电脑关机
Jun 20 Python
Python设计模式之抽象工厂模式原理与用法详解
Jan 15 Python
在Qt5和PyQt5中设置支持高分辨率屏幕自适应的方法
Jun 18 Python
python 数据提取及拆分的实现代码
Aug 26 Python
tensorflow生成多个tfrecord文件实例
Feb 17 Python
Python基于stuck实现scoket文件传输
Apr 02 Python
python 实现mysql自动增删分区的方法
Apr 01 Python
Python3 类型标注支持操作
Jun 02 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中执行系统外部命令
2006/10/09 PHP
一个用php实现的获取URL信息的类
2007/01/02 PHP
神盾加密解密教程(三)PHP 神盾解密工具
2014/06/08 PHP
php实现文件下载代码分享
2014/08/19 PHP
php数据访问之增删改查操作
2016/05/09 PHP
PHP获取用户客户端真实IP的解决方案
2016/10/10 PHP
Autocomplete Textbox Example javascript实现自动完成成功
2007/08/17 Javascript
JQuery,Extjs,YUI,Prototype,Dojo 等JS框架的区别和应用场景简述
2010/04/15 Javascript
Jquery中dialog属性小记
2010/09/03 Javascript
基于jquery的内容循环滚动小模块(仿新浪微博未登录首页滚动微博显示)
2011/03/28 Javascript
css样式标签和js语法属性区别
2013/11/06 Javascript
基于js与flash实现的网站flv视频播放插件代码
2014/10/14 Javascript
JS给Textarea文本框添加行号的方法
2015/08/20 Javascript
详解Node.js开发中的express-session
2017/05/19 Javascript
JavaScript实现的可变动态数字键盘控件方式实例代码
2017/07/15 Javascript
JS+CSS实现滚动数字时钟效果
2017/12/25 Javascript
实例详解BootStrap的动态模态框及静态模态框
2018/08/13 Javascript
vue2.0结合Element-ui实战案例
2019/03/06 Javascript
Vue动态组件和异步组件原理详解
2019/05/06 Javascript
JavaScript 装逼指南(js另类写法)
2020/05/10 Javascript
[57:31]DOTA2-DPC中国联赛 正赛 SAG vs CDEC BO3 第一场 2月1日
2021/03/11 DOTA
urllib和BeautifulSoup爬取维基百科的词条简单实例
2018/01/17 Python
Pandas0.25来了千万别错过这10大好用的新功能
2019/08/07 Python
使用Tensorflow将自己的数据分割成batch训练实例
2020/01/20 Python
python属于跨平台语言码
2020/06/09 Python
Python 如何查找特定类型文件
2020/08/17 Python
如何基于Python爬虫爬取美团酒店信息
2020/11/03 Python
python分布式爬虫中消息队列知识点详解
2020/11/26 Python
CSS3制作酷炫的条纹背景
2017/11/09 HTML / CSS
Coltorti Boutique官网:来自意大利的设计师品牌买手店
2018/11/09 全球购物
应届大学生求职的自我评价
2013/11/17 职场文书
公益活动策划方案
2014/01/09 职场文书
眼镜促销方案
2014/03/15 职场文书
物流管理系毕业生求职信
2014/06/03 职场文书
详细的本科生职业生涯规划范文
2014/09/16 职场文书
小学生运动会广播
2015/08/19 职场文书