项目名称:

编写登陆接口

项目需求:

    1 输入用户名密码
    2 认证成功后显示欢迎信息
    3 输错3次之后锁定,包括下次运行此程序也要锁定,涉及到持久化的问题只能用python 自带的文件输入输出接口 不能用系统级的接口
 
 
 
折腾了一天终于写出来了,主要是第三个需求中的持久化,我试了 file 的读写,还有pickle ,anydbm 发现都不成功,提示了很多报错,可能是我是小白的原因吧,最后我找到了json 这个官方的模块,使用了一下发现很不错,当然他也是在file 中操作的。
file 我是通过python 的官方手册里查找使用方法的,json 是通过百度得到的方法的。
python 的官方手册地址:https://docs.python.org/3/tutorial/index.html 这个以后要用到了,先标记一下。
 
下面是show code time :  # getpass 在Pychram 中有问题,请在真实python 环境中运行,例如可以保存到linux 中运行。
 #!/usr/bin/env python3
# Auth: Shen Yang
import json
import getpass vaild_user = {'yang': '','lu': ''} #定义可以登陆的用户及密码
black_list_file_path = "e://Python-study/black_list.db" #定义黑名单路径 try: # 使用try 来判断文件是否存在,如果不存在说明是第一次运行或者没有被blok 的用户,初始化用户名及密码输入错误次数
black_list_file = open(black_list_file_path,"r") # 使用file 以读的方式打开文件
black_list = json.load(black_list_file) #使用json 来载入文件存入的字典
black_list_file.close() # 关闭文件
except FileNotFoundError :
black_list = {"lu": 0, "yang": 0} while True: #循环执行输入名字
input_user = input("please input your name: ")
if input_user in vaild_user: #判断输入的用户是否在可以登陆的名单里
if black_list[input_user] == 3: # 判断用户是否已经输错密码3次
print("User {_input_user} is locked !".format(_input_user=input_user))
break
input_passwd = getpass.getpass("please input your passwd: ")
if input_passwd == vaild_user[input_user]: #判断密码是否正确
print(28 * "+")
print("Welcome {_input_user} to your server!".format(_input_user=input_user))
print(28 * "+")
break
else: # 密码不正确
print("Invalid passwd")
black_list[input_user] += 1 # 密码输入错误次数每次 + 1
if black_list[input_user] == 3: # 如果密码错误次数等于3 ,输出锁定信息并修改密码错误次数为3,下次登陆会先判断此值
print("User {_input_user} is locked !".format(_input_user=input_user))
black_list_file = open(black_list_file_path,"w") # 使用file 以写的模式打开文件
json.dump(black_list,black_list_file) # 使用json 来把字典持久化到文件中
black_list_file.close() # 关闭文件
break
else: # 判断输入的用户不在定义里输出错误信息并退出
print("User {_input_user} is not allowd in our system! bayby...".format(_input_user=input_user))
break

最新文章

  1. items2 配色
  2. Hibernate <查询缓存>
  3. mysql 数据库乱码解决
  4. python内置模块(3)
  5. 绕过杀毒软件抓取windows密码
  6. 小生经验贴 --- adapter的数据更新
  7. MySQL在线备份与恢复工具 --> Xtrabackup
  8. VirtualBox开发环境的搭建详解(转)
  9. ASP.NET 应用程序生命周期
  10. HDU2066:一个人的旅行(Dijkstra)
  11. 四、删除 Delete
  12. js 格式化带时区的日期
  13. sql server 转置 和实现随机分配和一串代码的含义拼在一行
  14. NHibernate中Session的处理 线程不安全
  15. python中的argv使用
  16. Python 字符串过滤
  17. Windows下使用第三方lua库
  18. SpringMVC由浅入深day01_3非注解的处理器映射器和适配器
  19. 【大数据系列】hadoop集群设置官方文档翻译
  20. Android实例剖析笔记(一)

热门文章

  1. Hadoop 2.7.0模拟分布式实验环境搭建[亲测]
  2. python3操作excel02(对excel的基础操作,进行简单的封装)3
  3. 洛谷 P1057 传球游戏
  4. [Git]常用的Git命令行
  5. AWVS12 防止反复注册
  6. 剑指offer24 二叉搜索树的后序遍历序列
  7. kubernetes-深入理解pod对象(七)
  8. 字符编码:BSTR
  9. tomcat - CPU高占用问题记录
  10. Maven:项目结构