2017-01-28 2 views
-2

Итак, я делаю базовый импровизированный логин, проверяющий вещь только с базовым текстовым файлом, чтобы «притворяться», и что нужно вернуть True. Проверка имени пользователя работает, но не проверка пароляСравнение одинаковых строк возвращает False?

@staticmethod 
def validate_login(filename,username,password): 
    file = open(filename,'r') 
    file.readline() 
    for line in file: 
     i = [i for i, char in enumerate(line) if char == '|'] 
     print username == line[i[0] + 2:i[1]-1] 
     print password == line[i[1] + 2:] 
     print password 
     print line[i[1] + 2:] 
     if username == line[i[0] + 2:i[1]-1] and password == line[i[1] + 2:]: 
      file.close() 
      print "Login Successful." 
      return True 

    file.close() 
    print "Failed to login. Invalid username or password." 
    return False 

Это результат вывода. Пароль точно совпадает с текстовым файлом, но возвращает false. Имя пользователя возвращает true. В чем именно проблема? Это сводит меня с ума.

True <--- username matched correctly returns true 
False <---passwords apparently don't match, returns false. 
DopeFiend97 <--password 
DopeFiend97 
+2

Вероятно, у вас есть новая строка '\ n' в вашем сравнении паролей. Вам нужно будет 'strip()' it off. Любая причина не использовать 'split', например. 'u, p = line.strip(). split ('|'); если username == u и password == p): ... ' – AChampion

+0

Исправлено это, пришлось использовать line.strip() – CabDude

ответ

1

Придется использовать функцию .strip() для удаления непредвиденных символов в конце строки.

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