文本不会附加到.txt文件Python中

2024-09-30 20:25:13 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我刚开始学习python,并尝试了一个包含登录系统的小项目。我想将用户名和密码保存到.txt文件中,但它们就是不保存,我也无法找出错误所在。这个问题一定发生在我定义的register dunction中,因为登录与我手动引入的用户名和密码配合得很好

def register():
    user = input("Registration page\nUSERNAME:")
    users = open("users.txt", "r")
    if user in users:
        print("That user already exists!")
        login()
        users.close()
    else:
        pwrds = open("pass.txt", "a")
        users = open("users.txt", "a")
        users.write("\n" + user)
        p1 = input("PASSWORD:")
        p2 = input("CONFIRM PASSWORD:")
        if p1 == p2:
            pwrds.write("\n" + p1)
            login()
            users.close()
            pwrds.close()
        else:
            print("Failed password confirmation, restarting")
            register()
            users.close()
            pwrds.close()

提前感谢您的帮助


Tags: txtregister密码closeinputifloginopen
1条回答
网友
1楼 · 发布于 2024-09-30 20:25:13

当您在文件对象(users)中检查字符串包含(user in)时,总是会得到False,因为每一行都附加了转义的新行字符“\n”

另外,您尝试打开文件两次。做这种事没有意义。您可以从一开始就通过'r+'参数打开它

请注意'r+'方法将把光标的初始位置放在文件的开头,但是由于我们调用了read()方法,那么光标现在将被设置到文件的末尾,允许我们将新用户写入文件的最后位置

我会这样做:

def register():
    user = input("Registration page\nUSERNAME:")
    file = open("users.txt", "r+")
    users = file.read().splitlines() # considering you are saving the users one by one, in each line.
    if user in users:
        print("That user already exists!")
        users.close()
        login()
    else:
        pwrds = open("pass.txt", "a")
        users.write("\n" + user)
        users.close()
        p1 = input("PASSWORD:")
        p2 = input("CONFIRM PASSWORD:")
        if p1 == p2:
            pwrds.write("\n" + p1)
            pwrds.close()
            login()
        else:
            print("Failed password confirmation, restarting")
            pwrds.close()
            register()

相关问题 更多 >