我正在制作的该程序的一部分需要用户输入(用户名),并检查它是否已存在于文本文件中。如果已经存在,则打印(“用户名已经存在”。) 但是现在,不管输入是否已经存在于文本文件中,程序都会继续将输入添加到文本文件中。 有人知道如何解决吗?(这是btw的一部分)
def passcheck():
user=name_ent2.get()
pass1 = pass_ent2.get()
confirm = retype_ent.get()
names = open("nlist.txt","a+")
if user in names:
print("username already exists.")
if user not in names:
names.write(user)
names.write('\n')
names.close()
是否可以检查文本文件中是否存在userinput?
答案 0 :(得分:0)
当您使用user in names
测试成员资格时,Python会在文件的各行上进行迭代,并将user
与每一行进行比较。
这里的问题是,在行的末尾包含一个换行符\n
,因此您的名字将不匹配。
因此,您必须在进行比较之前删除此换行符的行,例如:
with open('nlist.txt') as names:
if any(user == line.strip() for line in names):
print('User exists')
还请注意,我以读取模式(默认为'r'
)打开文件。您以附加模式打开它,该模式将指针放在文件末尾。由于没有更多要阅读的内容,您的检查将始终失败。
答案 1 :(得分:0)
def passcheck():
user=name_ent2.get()
pass1 = pass_ent2.get()
confirm = retype_ent.get()
names = open("nlist.txt","a+")
paste = bytes(user, 'utf-8')
with open("nlist.txt", "rb", 0) as file:
for f in file:
f = f.strip()
if f == paste:
print("true")
status = True
if status == False:
names.write("\n" + user)
print(user + " got added to the list")
names.close()