我正在编写一个使用基本身份验证的python(3.4)代码。我已经存储了凭证,即用户名和&密码在文本文件中(abc.txt) 每当我登录时,代码只接受文本文件的第一行&忽略其余凭据并提供错误的凭据错误。
我的代码:
with open('abc.txt') as f:
credentials = [x.strip().split(':') for x in f.readlines()]
for username, password in credentials:
user_input = input('Please Enter username: ')
if user_input != username:
sys.exit('Incorrect incorrect username, terminating... \n')
user_input = input('Please Enter Password: ')
if user_input != password:
sys.exit('Incorrect Password, terminating... \n')
print ('User is logged in!\n')
的abc.txt:
Sil:xyz123
smith:abc321
答案 0 :(得分:1)
这种情况正在发生,因为您只是检查第一行。目前,用户只能输入与文本文件中第一行匹配的凭据,否则程序将退出。您应该使用用户名和密码创建一个字典,然后检查用户名是否在该字典中,而不是迭代凭证列表。
with open('abc.txt') as f:
credentials = dict([x.strip().split(':') for x in f.readlines()]) # Created a dictionary with username:password items
username_input = input('Please Enter username: ')
if username_input not in credentials: # Check if username is in the credentials dictionary
sys.exit('Incorrect incorrect username, terminating... \n')
password_input = input('Please Enter Password: ')
if password_input != credentials[username_input]: # Check if the password entered matches the password in the dictionary
sys.exit('Incorrect Password, terminating... \n')
print ('User is logged in!\n')