迭代文本文件以在Python中查找用户名和密码匹配

时间:2015-08-27 13:10:11

标签: python list loops

for循环的结构看起来不对。由于某种原因,它没有正确跳转到声明的“其他”部分。我将在控制台中尝试这一点,以简化一些事情,看看我是否有运气:

echo BB-BONE-AUDI-02 > /sys/devices/bone_capemgr*/slots

1 个答案:

答案 0 :(得分:1)

您的循环结构的方式,您将获得文件中与您的用户名/密码不匹配的每一行的“拒绝”消息,并为匹配的每一行获取“已接受”消息。如果您只想显示一条消息,请等待循环结束以创建一条消息。

access_permitted = False
for i,s in enumerate(fields):
    if textlogin.get()==fields[i] and textpassword.get()==fields[i+1]:
        access_permitted = True

if access_permitted:
    welcome=Label(myGui,text="Access Granted. Loading Profile ....")
    welcome.pack()
else:
    denied=Label(myGui,text="Access Denied")
    denied.pack()
    line=fin.readline()

我不能肯定地说,但是你似乎也可能会在循环中遇到IndexError: list index out of range错误,因为fields[i+1]会超过列表末尾的一个错误最后的迭代。我猜测fields是一个包含用户名+密码元组的列表,在这种情况下你应该尝试:

for username, password in fields:
    if textlogin.get()==username and textpassword.get()==password:
        access_permitted = True

如果fields不是用户名 - 密码元组列表,您可能需要尝试其他方法。

如果fields中的每个项目都包含用户名和密码以及其他项目,请尝试:

for row in fields:
    if textlogin.get()==row[0] and textpassword.get()==row[1]:
        access_permitted = True