【1.54】装饰器-京东实验-文件存储用户信息

#test 文件存储的信息,注意行末有逗号 取出来的就是一个元组,没有逗号,取出来就是一个字典
{"name":"产品经理","passwrd":123},
{"name":"产品经理1","passwrd":123},
{"name":"产品经理2","passwrd":123},
{"name":"产品经理3","passwrd":123},
{"name":"产品经理4","passwrd":123},

#这里就是用 test 文件存储的用户信息 ,然后输入用户名和密码后, 在读取文件信息比对
usr_dict ={"name":None,"login_stat":False}
def  auth_func(func):
    def wrapper(*args,**kwargs):
        if usr_dict["login_stat"] == False:
            name = input("用户名:").strip()
            passwrd = input("密码:").strip()
            with open("test","r",encoding="utf-8") as f:
                for filedict in f:     #eval 没有逗号取出来就是一个字典  直接写为: i=eval(filedict)
                    i = eval(filedict)[0]     #eval 取出来的值 居然是一个元组 ,其实不是这样 是我弄错了 我写文件在字典后面加 逗号了,
                    if i["name"]==name and str(i["passwrd"])==passwrd:
                        usr_dict["login_stat"]=True
                        usr_dict["name"]=name
                        print("登陆成功")
                        res = func(*args,**kwargs)
                        print (res)
                        return res
                else:
                    print("用户名密码有误")
        else:
            res = func(*args, **kwargs)
            print(res)
            return res
    return wrapper




@auth_func
def jd_index():
    return "欢迎来到京东"

@auth_func
def jd_home(name):
    return "欢迎回家%s"%name

@auth_func
def jd_shopping_car(name):
    return "%s购物车[%s,%s]"%(name,"牛奶","面包")

jd_index()
jd_home("产品经理")
jd_shopping_car("产品经理")

 




posted @ 2016-04-16 16:05  科学小怪癖  阅读(91)  评论(0)    收藏  举报