2016-10-06 3 views
1

Я пишу код python (3.4), который использует базовую аутентификацию. Я сохранил учетные данные, то есть имя пользователя & пароль в текстовом файле (abc.txt).
Всякий раз, когда я вхожу в систему, код принимает только первую строку текстового файла & игнорирует остальную часть учетных данных и дает неправильную учетную запись.Python 3.4 не читает более одной строки из текстового файла

Мой код:

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') 
+0

@SmithPereira любые ошибки? –

+0

Привет, Фархан, спасибо большое! – Von

+0

сожалею о моем предыдущем комментарии, его отлично работает! – Von

Смежные вопросы