如何检查文本文件中是否包含字符串? (蟒蛇)

时间:2018-12-20 17:52:54

标签: python python-3.x project

我正在做一个学校项目-作为其中一部分,我需要检查其用户名是否已存储在文本文件中:

def checkUsername():
    userName = str(input("WHAT IS YOUR NAME?"))
    if userName in usernames.read():
        print("WELCOME BACK" + userName)
        print("LET\'S GET STARTED")
        return False
    else:
        usernames.write(userName)
        print("WELCOME TO THE SYSTEM!")
        return False

尽管我已尽力解决此问题,但似乎无法弄清楚。有人可以帮忙吗?

3 个答案:

答案 0 :(得分:2)

您缺少的是首先打开文件进行读取:

def checkUsername():
    userName = str(input("WHAT IS YOUR NAME?"))
    with open("usernames.txt", 'r') as usernames:    
        if userName in usernames.read():
            print("WELCOME BACK" + userName)
            print("LET\'S GET STARTED")
            return False
        else:
            usernames.write(userName)
            print("WELCOME TO THE SYSTEM!")
            return False

open 会在指定路径下打开文件(将usernames.txt更改为文件的完整路径),“ r”表示该文件将以读取权限打开。这通常有利于使用python的open()方法,该方法需要在读取完文件后关闭文件。

侧面说明:请注意,您在函数的两种情况下都返回了False。

答案 1 :(得分:1)


即:

def checkUsername(user):
    if user.strip():
        with open("myfile") as users:
            print(f"WELCOME BACK {user}\nLET'S GET STARTED") if user in users.read() else print(f"WELCOME TO THE SYSTEM!")
    else:
        print("Error: empty username")

user = input("WHAT IS YOUR NAME?")
checkUsername(user)

答案 2 :(得分:1)

此功能的一个问题是未定义[ignore_older][1],另一个问题是usernames块的两端将返回if

解决这些问题的一种方法是

False

上面的代码段在某些方面有所不同,但是它也忽略了您可能还面临的两个可能的错误:输入中的区分大小写(def checkUsername(usernames_file): fp = open(usernames_file, 'r') # the default mode is 'r', but it's explicit here usernames = fp.read() userName = str(input("WHAT IS YOUR NAME?")) if userName in usernames: print("WELCOME BACK" + userName) print("LET\'S GET STARTED") fp.close() return True # note, not False else: fp.write(userName) print("WELCOME TO THE SYSTEM!") fp.close() return False 行可能是用户想要的),以及input(...)。希望这会把您推向正确的方向。