George Frangs
George Frangs

Reputation: 23

Writing to text file formatting

I have an assignment to make a simple task manager/todo list. This code block is just the part of the program that handles login, new username and password registration. When the user registers that input is written to a text file called user.txt.

Whenever it writes to the text file, it writes like this:(['admin', 'adm1n']) instead, it should write it like this:admin, adm1n

user_file = open("user.txt","r+")
login = False

while login == False:
new = input("Are you a new user? Y/N:\n").lower()

if new == "y":
    print("Please register a new username and password:\n")
    new_user1 = input("Please enter a new username:\n").split()
    new_pass1 = input("Please enter a new password:\n").split()
    new_user2 = input("Please confirm your username:\n").split()
    new_pass2 = input("Please confirm your password:\n").split()
    user_pass1 = new_user1 , new_pass1
    user_pass2 = new_user2 , new_pass2
    if user_pass1 == user_pass2:
        user_file.write(f"{user_pass2},")
        user_file.seek(0)
    break

elif new == "n":
    username = input("Enter your username:\n")
    password = input("Enter your password:\n")
    valid_user = username
    valid_password = password
    
for line in user_file:
    valid_user, valid_password = line.split(", ")
    if username == valid_user and password == valid_password:
        login = True

if login == False:
    print("Incorrect details! Please enter a valid username and password")

What am I doing wrong? I'm sure it's something small. Thanks in advance!

Upvotes: 1

Views: 70

Answers (2)

George Frangs
George Frangs

Reputation: 23

Thanks for your feedback everyone.

I managed to get it figured out. I added an index to it to print the string and it worked just fine.

    user_pass2 = new_user2 , new_pass2
    if user_pass1 == user_pass2:
        #Writes username and password to text file in format requested.
        user_file.write(f'\n{user_pass2[0]}, {user_pass2[1]}')

Upvotes: 0

Gurses
Gurses

Reputation: 411

Because you are making a tuple there. Instead, you should create a string. Here is the corrected version of your code

    user_pass1 = new_user1 + ',' + new_pass1
    user_pass2 = new_user2 + ',' + new_pass2
    if user_pass1 == user_pass2:
        user_file.write(f"{user_pass2},")
        user_file.seek(0)
    break

Upvotes: 2

Related Questions