有没有办法检查文本文件中是否存在userinput?

2024-09-18 18:54:32 发布

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

我正在制作的这个程序的一部分需要用户输入(用户名)并检查它是否已经存在于文本文件中。如果已经存在,则打印(“用户名已经存在”) 但是现在,不管输入是否已经存在于文本文件中,程序都会继续将输入添加到文本文件中。 有人知道怎么修理吗?(顺便说一句,这是那部分)

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


Tags: 用户namein程序getifnamesdef
2条回答
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()

当您使用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')。您在附加模式下打开了它,将指针放在文件的末尾。因为没有更多的东西要读,你的支票总是会失败的

相关问题 更多 >