案例:Python用户登录以及锁定接口

文件处理(调用文件中的值,此处为等待时间值)

使用OS模块,与操作系统交互

#此处写锁定
#判断某个文件是否存在
#if os.path.exists("文件存放路径")
if os.path.exists("locked"):
    print("文件存在")
    #此处将文件中的锁定时间读取出来,并实现锁定秒数
    #文件处理
    #with open("文件名","打开的模式","字符编码")
    #r : read 读取
    with open("locked","r",encoding ="utf-8") as f:
        wait_time = f.read()
        print("锁定时间为",wait_time,"s")
        print("类型为",type(wait_time))
        #将str转换为int类型   int(变量)
        #若文件中存放时间,则从文件中读取等待的时间
        time.sleep(int(wait_time))
        print("解锁成功,请继续使用")
else:
    print("文件不存在")

注意:需在python文件路径下创建一个locked.txt文件。或者调用os.path.exists()时直接填写路径

文件操作:写入一个text文件,默认写入当前程序所在文件夹

 

with open("%s.text"%username,"w",encoding='utf-8')as f:
    f.write("当前用户%s已被锁定"% (username))

 

文件操作:移除text文件

os.remove("%s.text"%username)

 

 

 

直接使用time模块

if number == 4: #time
    import time     #time是python解释器自带的一个模块,可以通过“模块名.模块功能”使用,import添加模块
    # time.sleep()  等待的时间必须是整型

    print("账户锁定,等待3s后解锁")
    time.sleep(3)
    print("账号已解锁,请继续使用")
    number = 1

 

# 选做题:编写用户登录接口
#1、输入账号密码完成验证,验证通过后输出"登录成功"
#2、可以登录不同的用户
#3、同一账号输错三次锁定(附加功能,在程序一直运行的情况下,一旦锁定,则锁定5分钟后自动解锁)
#扩展需求:在3的基础上,完成用户一旦锁定,无论程序是否关闭,都锁定5分钟
import time
import os

user_data = {"FishBall":'188741', "Jil":'1118'}
tag = True
user_error = {"FishBall": {"cout": 0, "locked": False}, "Jil": {"cout": 0, "locked": False}}
while tag :
    username = input("请输入您的用户名:")
    if username == 'Q':
        break
    else:
        # 在此处判断当前用户是否被锁定,若被锁定,则等待5分钟
        # os.path.exists('文件的路径')  判断文件是否存在,存在则返回True,否则返回False
        if user_error[username]['locked'] or os.path.exists("%s.text"%username):
            print("当前用户需要锁定5秒")
            time.sleep(5)
            print("解锁成功")
            user_error[username]['locked'] = False
            user_error[username]['cout'] = 0
            os.remove("%s.text"%username)
            tag = False
        while True:
            password = input("请输入您的密码:")
            if username in user_data:
                print(f"当前登录用户为:{username}") #相当于print("当前用户为:%s" % username) python3.5后的语法

                if password == user_data.get(username): #.get() 单纯取值,不能进行运算
                    print("登陆成功")
                    break
                else:
                    print("密码错误!")
                    user_error[username]['cout'] += 1
                    if user_error[username]['cout'] == 3:
                        user_error[username]['locked'] = True
                        print("用户已被锁定5秒")
                # 注意: 若当前用户输错三次,则以当前用户作为文件的名字保存到本地,表示该用户已被锁定
                        with open("%s.text"%username,"w",encoding='utf-8')as f:
                            f.write("当前用户%s已被锁定"% (username))
                        break
            else:
                 print("用户名不存在!")

 

posted @ 2020-02-19 17:36  Jil-Menzerna  阅读(539)  评论(0)    收藏  举报