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 相关文章推荐
以一段代码为实例快速入门Python2.7
Mar 31 Python
Python实现单词拼写检查
Apr 25 Python
Python实现给文件添加内容及得到文件信息的方法
May 28 Python
Python 使用os.remove删除文件夹时报错的解决方法
Jan 13 Python
Python操作word常见方法示例【win32com与docx模块】
Jul 17 Python
在python中用url_for构造URL的方法
Jul 25 Python
python判断自身是否正在运行的方法
Aug 08 Python
Python+Selenium+phantomjs实现网页模拟登录和截图功能(windows环境)
Dec 11 Python
基于python实现文件加密功能
Jan 06 Python
Python批量处理csv并保存过程解析
May 16 Python
学会迭代器设计模式,帮你大幅提升python性能
Jan 03 Python
Python 流媒体播放器的实现(基于VLC)
Apr 28 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 常用类整理
2009/12/23 PHP
PHP获取时间排除周六、周日的两个方法
2014/06/30 PHP
YII框架中搜索分页jQuery写法详解
2016/12/19 PHP
PHP基于Redis消息队列实现发布微博的方法
2017/05/03 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
2018/06/13 PHP
javascript 写类方式之八
2009/07/05 Javascript
js实现幻灯片播放图片示例代码
2013/11/07 Javascript
ListBox实现上移,下移,左移,右移的简单实例
2014/02/13 Javascript
JavaScript获取flash对象与网上的有所不同
2014/04/21 Javascript
node.js下when.js 的异步编程实践
2014/12/03 Javascript
动态加载css方法实现和深入解析
2017/01/18 Javascript
搭建element-ui的Vue前端工程操作实例
2018/02/23 Javascript
微信小程序仿微信运动步数排行(交互)
2018/07/13 Javascript
[jQuery] 事件和动画详解
2019/03/05 jQuery
element-ui中Table表格省市区合并单元格的方法实现
2019/08/07 Javascript
vue之a-table中实现清空选中的数据
2019/11/07 Javascript
vue抽出组件并传值实例
2020/07/31 Javascript
解决vue项目中出现Invalid Host header的问题
2020/11/17 Javascript
Vue实现指令式动态追加小球动画组件的步骤
2020/12/18 Vue.js
python中sleep函数用法实例分析
2015/04/29 Python
在python3.5中使用OpenCV的实例讲解
2018/04/02 Python
使用anaconda的pip安装第三方python包的操作步骤
2018/06/11 Python
pandas使用get_dummies进行one-hot编码的方法
2018/07/10 Python
python通过TimedRotatingFileHandler按时间切割日志
2019/07/17 Python
python 列表推导式使用详解
2019/08/29 Python
django连接oracle时setting 配置方法
2019/08/29 Python
Python 实现打印单词的菱形字符图案
2020/04/12 Python
PyQt5-QDateEdit的简单使用操作
2020/07/12 Python
python中if嵌套命令实例讲解
2021/02/25 Python
Superdry极度乾燥官网:日本街头风格,纯英国制造品牌
2016/10/31 全球购物
会计实习期自我鉴定
2013/10/06 职场文书
关于抽烟的检讨书
2014/02/25 职场文书
环境监测与治理技术专业求职信
2014/07/06 职场文书
起诉书范文
2015/05/20 职场文书
务工证明怎么写
2015/06/18 职场文书
幼儿园保教工作总结2015
2015/10/15 职场文书