Python项目2---实现用户登录接口(含文件操作)

第一步:读取用户账号密码文件,将其内容按账号为key,密码为值,保存在一个字典中
第二步:让用户输入账号和密码
第三步:判断账号是否在字典的key中
	1有,检查是否账号被锁定(判断行开始是否有!)
		没有锁定
			再检查密码是否匹配
			1匹配:登录成功
			2不匹配:重新输入or退出
			密码错误3次,锁定账号
		锁定
			提示信息
	2没有,让用户重新输入账号or退出
第四步:锁定密码错误3次的账号,在账号文件中该账号密码对应的行添加一个!放在密码开始

from fun import *
with open("users data.txt","r") as f:
    user_data = f.read()
    user_data = user_data.split('\n')
    data_dict = dict([it.split(',') for it in user_data])#将生的成列表转换成字典
    f.close()
i = 1
while(i):
    ID = input("请输入账号:")
    password = input("请输入密码:")
    if ID in data_dict.keys():
        if data_dict[ID][0] == '!':
            print("您的账号已经被锁定,请联系管理员!")
            break
        else:
            for times in range(3):
                if password == data_dict[ID]:
                    print("登录成功")
                    i = 0
                    break
                else:
                    if times != 2:
                        choice =  input("密码错误,按1重新输入,按2退出:")
                        if choice == '1':
                            password = input("请输入密码:")
                            continue
                        else:
                            print("您已经退出登录系统")
                            i = 0
                            break
                    else:
                        print("密码错误3次,您的账户已经被冻结")
                        lock(user_data,ID)
                        i = 0
                        break
    else:
        choice = input("账户不存在,按1重新输入,按2退出:")
        if choice == '1':
            continue
        else:
            print("您已经退出登录系统")
            break


fun.py
import os,shutil
def lock(user_data,ID):
    with open("user_data_lock.txt","w") as f:
        for it in user_data:
            if it.split(',')[0] == ID:
                it = it.split(',')[0]+',!'+it.split(',')[1]
                f.write(it+'\n')
            else:
                f.write(it+'\n')
        f.close()
    os.unlink("users data.txt")
    shutil.move("user_data_lock.txt","users data.txt")

账户文件格式:


猜你喜欢

转载自blog.csdn.net/tobe_numberone/article/details/80616825
今日推荐