Программа не печатает «Неверное имя пользователя или пароль» при неправильной записи - PullRequest
0 голосов
/ 16 июня 2019

Я работаю в программе регистрации входа в систему, которая запишет файл .txt и затем подтвердит его, чтобы войти в систему. Проблема в том, что если я напишу свое имя пользователя и пароль, он не напечатает «Неверное имя пользователя»или пароль », если имя пользователя неверно, оно просто выключается.

print("Hello")
user = input("Do you have an account? y/n: ")
from getpass import getpass

#Function if you dont have an account
if user == "n":
    while True:
        username = input("Enter a username: ")
        password = input("Enter a password: ")
        password1 = input("Confirm your password: ")
        if password == password1:
            file = open(username+".txt", "w")
            file.write(username+":"+password)
            file.close()
            user = "y"
            break
        print("Passwords do NOT match")

#Function if you have an account
if user == "y":
    while True:
        username = input("Login: ")
        password = getpass("Password: ")
        file = open(username+".txt", "r")
        data = file.readline()
        file.close()
        if data == username+":"+password:
            print("Welcome", username)
            input("Press Enter to continue")
            break
        print("Incorrect username or password")

1 Ответ

0 голосов
/ 16 июня 2019

Согласно моему комментарию: это потому, что ваше имя файла username.txt. Поэтому, если вы введете неправильное имя пользователя, вы получите ошибку FileNotFoundError. Но это работает ожидаемо, если вы пишете правильное имя пользователя с неправильным паролем, это дает Incorrect username or password. Поэтому вам нужно создать файл с именем pass.txt и использовать его для чтения и записи.

user = input("Do you have an account? y/n: ")
from getpass import getpass

filename = 'pass.txt'
#Function if you dont have an account
if user == "n":
    while True:
        username = input("Enter a username: ")
        password = input("Enter a password: ")
        password1 = input("Confirm your password: ")
        if password == password1:
            file = open(filename, "a")
            file.write(username+":"+password)
            file.write("\n")
            file.close()
            user = "y"
            break
        print("Passwords do NOT match")

#Function if you have an account
if user == "y":
    d = {}
    with open(filename) as f:
        d = dict([line.rstrip().split(':') for line in f])
    while True:
        username = input("Login: ")
        password = getpass("Password: ")

        if (username in d and d[username] == password):
            print("Welcome", username)
            input("Press Enter to continue")
            break
        print("Incorrect username or password")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...