在python中向客户请求注册时,如何防止文本文件中的重复



我的代码看起来像这个

def registers():
print("n-------------Register-------------")
new_acc = open("register_file.txt", "a")
new_acc_read = open("register_file.txt", "r")
new_uname = input("Enter new username: ")
username = []
for line in new_acc_read:
user = line.split()
username.append(user[0])
print(username)
if new_uname in username:
print("Username already exists.")
new_uname = input("Enter new username: ")
new_acc.write(new_uname)
new_pass = input("Enter new password: ")
if len(new_pass) < 8:
print("Make sure password is at least 8 characters")
new_pass = input("Enter new password: ")
elif re.search("[0-9]", new_pass) is None:
print("Make sure password has a number in it")
new_pass = input("Enter new password: ")
elif re.search("[a-z, A-Z]", new_pass) is None:
print("Make sure password has letter in it")
new_pass = input("Enter new password: ")
print("Register successful! Proceed to login.")
new_acc.write(new_uname + " " + new_pass)
new_acc.write("n")

我尝试这样做是为了防止相同用户名的重复,但每次我重新运行或登录到不存在的帐户并返回注册页面时,我都可以使用相同的用户名,在我的文本文件中,它被证明是重复的

wewewewe wewe12345
wewewewewewe wewewe12345
wewewewe wewe12345

这是输出

-------------Register-------------
Enter new username: wewe
['wewewewe']
['wewewewe', 'wewewewewewe']
['wewewewe', 'wewewewewewe', 'wewewewe']
Enter new password: wewe12345

您可以参考我制作的这个简单程序:

def register():
x=input("Enter username: ")
y=input("Enter password: ")
found=False
with open('login.txt','r+') as file:
file1=file.readlines()
for line in file1:
a,b=line.strip('n').split()
if a==x:
found=True
break
if found:
print("Username already exist.")
register()
else:
file.write(x+' '+y+'n')
register()

让我们运行这个程序。

执行之前,文本文件为空执行文件后:

Enter username: a
Enter password: b

文本文件现在:

a b

样本执行编号2:

Enter username: a
Enter password: b
Username already exist.
Enter username: c
Enter password: d

文本文件现在:

a b
c d

最新更新