day01 项目

项目名称:

  编写登陆接口

项目需求:

    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 中运行。

 

 1 #!/usr/bin/env python3
 2 # Auth: Shen Yang
 3 import json
 4 import getpass
 5 
 6 vaild_user = {'yang': '123','lu': '321'}  #定义可以登陆的用户及密码
 7 black_list_file_path = "e://Python-study/black_list.db"  #定义黑名单路径
 8 
 9 try:  # 使用try 来判断文件是否存在,如果不存在说明是第一次运行或者没有被blok 的用户,初始化用户名及密码输入错误次数
10     black_list_file = open(black_list_file_path,"r")  # 使用file 以读的方式打开文件
11     black_list = json.load(black_list_file) #使用json 来载入文件存入的字典
12     black_list_file.close()                 # 关闭文件
13 except FileNotFoundError :
14     black_list = {"lu": 0, "yang": 0}
15 
16 while True:  #循环执行输入名字
17         input_user = input("please input your name: ")
18         if input_user in vaild_user:   #判断输入的用户是否在可以登陆的名单里
19                 if  black_list[input_user] == 3:  # 判断用户是否已经输错密码3次
20                     print("User {_input_user} is locked !".format(_input_user=input_user))
21                     break
22                 input_passwd = getpass.getpass("please input your passwd: ")
23                 if input_passwd == vaild_user[input_user]: #判断密码是否正确
24                         print(28 * "+")
25                         print("Welcome {_input_user} to your server!".format(_input_user=input_user))
26                         print(28 * "+")
27                         break
28                 else:  # 密码不正确
29                         print("Invalid passwd")
30                         black_list[input_user] += 1      # 密码输入错误次数每次 + 1
31                         if black_list[input_user] == 3:  # 如果密码错误次数等于3 ,输出锁定信息并修改密码错误次数为3,下次登陆会先判断此值
32                                 print("User {_input_user} is locked !".format(_input_user=input_user))
33                                 black_list_file = open(black_list_file_path,"w") # 使用file 以写的模式打开文件
34                                 json.dump(black_list,black_list_file)       # 使用json 来把字典持久化到文件中
35                                 black_list_file.close()                     # 关闭文件
36                                 break
37         else:         # 判断输入的用户不在定义里输出错误信息并退出
38                 print("User {_input_user} is not allowd in our system! bayby...".format(_input_user=input_user))
39                 break

 

posted @ 2016-07-24 21:21  yangever  阅读(211)  评论(0编辑  收藏  举报