读取文件问题与Python用户名和Passowrd恢复系统



这是一个恢复系统,用户在其中输入其唯一代码以恢复其详细信息。 输入唯一代码时,它会从文本文件中获取其详细信息,然后打印其用户名和密码。然后,他们可以选择更改密码。我遇到的问题是,当我在其中输入旧密码时,它说密码不在该特定行中。文件中的格式如下:

(unique code) username: (username) password: (password)

global password1, password2,
check = True
while check:
    hash1=input("n"+"Enter your unique code to recover your username or password ")
    with open("mount.txt","r") as file:
        for line in file:
            text = line.strip().split()
            if hash1 in text:
                print(line)
                check = False
                change = input("Do you want to change your password? [y,n]")
                while change not in('y', 'n'):
                    change = input("Do you want to change your password? [y,n]")
                if change == "y":
                    check = True
                    with open("mount.txt","r+") as file:
                        for line in file:
                            text = line.strip().split()
                            while check:
                                password1 = input("Enter old password ")
                                password2 = input("Enter new password ")
                                if len(password2) < 5:
                                    print("New password is too short")
                                elif password1 not in text:
                                    print("Old password is incorrect")
                                elif password1 in text:       
                                    s = open("mount.txt").read()
                                    s = s.replace(password1, password2)
                                    f = open("mount.txt", 'w')
                                    f.write(s)
                                    f.close()
                                    print("Password has been successfully changed")
                                    check = False
            elif len(hash1) < 32 and (check == True):
                print("Unique code not found please try again")
                break

因此,当我输入唯一代码时,它会显示正确的行,然后当我尝试更改密码时,它会一直说密码不在那个特定行中。

目前,在循环访问文本文件中的行时,如果hash1不在 ANY 行中,它会告诉您找不到代码,并立即中断。

要解决此问题,您应该中断或从if hash1 in text条件内部返回,然后测试if len(hash1) < 32 and (check == True)现在仅在检查文件中的所有行后运行。

此外,假设文本是"aslhngbadf 用户名:鲍勃密码:爱丽丝",line.strip().split()将被['aslhngbadf', 'username:', 'bob', 'password:', 'alice'],因此检查password1是否在text中对密码的一个字母不起作用。 但是,如果您输入单词"密码:"或"鲍勃"...,请检查事物是否像if password1 == text[4]一样明确匹配,它将起作用。

最后,当您重新打开并迭代文件时,您将从文本匹配的行移回文件顶部。 不要打开坐骑.txt两次。 text仍然可用,并且与您第一次设置它时起保持不变。

相关内容

  • 没有找到相关文章

最新更新