Я учусь python. Я хотел научиться работать с текстовыми файлами, поэтому решил создать простую консольную программу.
Программа выполняет следующие действия:
- Спрашивает, был ли у вас уже профиль.
- Если нет, то просит создать логин и пароль. Информация сохраняется в текстовом файле.
- Если да, то просит ввести ваш пароль и имя пользователя.
Когда у пользователя нет профиля, все работает нормально. Когда у пользователя есть профиль и он хочет войти в систему, он не работает, и я не знаю почему.
Имя пользователя сохраняется в первой строке текстового файла, а пароль - во второй строке , поэтому я использую readlines () [0] и readlines () [1].
Имя пользователя распознается правильно, а пароль - нет. Я получаю эту ошибку
Traceback (most recent call last):
File "Archivo de prueba.py", line 4, in <module>
print(text_file.readlines()[1])
IndexError: list index out of range
Это код, который я написал:
text_file = open("Archivo de prueba.txt", "r+")
def ask_for_account():
global has_account
has_account = input("Do you have an account? (Write \"Yes\" or \"No) ")
ask_for_account()
def create_profile():
create_user = str(input("Type your new username: "))
create_password = str(input("Type your new password: "))
text_file.write(create_user)
text_file.write("\n")
text_file.write(create_password)
def login():
username = text_file.readlines()[0]
password = text_file.readlines()[1]
current_user = input("Type your username: ")
current_password = input("Type your password: ")
if str(current_user) == str(username) and str(current_password) == str(password):
print("Succesfully logged in.")
else:
print("Invalid username or password")
if has_account == "No":
create_profile()
elif has_account == "Yes":
login()
else:
print("Invalid input")
ask_for_account()
text_file.close()