如何检查输入的值是否在键中-Python

时间:2018-10-08 20:06:48

标签: python dictionary login

我一直在尝试在python上创建一个非常简单的登录屏幕,以达到有趣的目的。在程序的其他地方,我将输入的用户名和密码保存为str(以dict格式)在外部文件中。我可以检查密钥用户名是否正确,但是我无法找到一种方法来检查输入的密码是否是与密钥关联的密码-值-我可能会措辞怪异,但是任何人都有知道如何吗?

def login():
clear()
gap()
loginu = input("ENTER YOUR USERNAME:")
gap()
file = open("usernamesf.txt","r")
usernra = file.read()
usernr = usernra.replace("'","")
usernw = '"{' + usernr + '}"'
print (usernw)
usernwl = ast.literal_eval(usernw)
print (usernwl)
if loginu in usernwl:
    gap()
    loginp = input("ENTER YOUR PASSWORD:")
    loginpc = usernw[loginu]
    if loginp in loginpc:
        print ("yay")

else:
    gap()
    print ("NO USERNAME FOUND...")
    time.sleep(0.5)
    gap()
    signu = input("Would you like to sign up?")
    if signu in ['yes','y','Y','Yes',' yes',' Yes',' y',' Y']:
        sign()
    else:
        menu()

1 个答案:

答案 0 :(得分:0)

我首先建议您使用json库来解析文件-它能够将python字典转换为字符串,反之亦然,这确实很有用。

要将dict转换为strjson.dumps(dictionary)

要将str转换为dictjson.loads(string)

有了这个,要从文件中读取字典,就很简单:

import json
with open("usernamesf.txt") as f:
     user_dictionary = json.loads(f.read())
     if loginu in user_dictionary:
         password = input("ENTER YOUR PASSWORD")
         if user_dictionary[username] == password:
             # success

请注意,我是如何在此处对文件使用with语句的-这可确保在完成操作后,即退出with块后,Python会正确关闭文件。您可以在以下文件的I / O官方python文档中了解有关此内容的更多信息:https://docs.python.org/2/tutorial/inputoutput.html#methods-of-file-objects