检查文件以查找与输入匹配的文本

时间:2017-10-01 18:50:02

标签: python file loops input

我有一个需要用户名系统的程序,我希望用户输入他们的用户名,程序会检查文件'username'以查看它是否在列表中。如果列表中只有一个人,则下面的代码有效,否则打印正确且不正确。我如何更改我的代码,如果只有一行匹配它打印正确的输入。

username = input("enter username: ")
search = open("username", "r")
for line in search:
    if username in line:
        print ("correct")
    else:
        print ("incorrect")

3 个答案:

答案 0 :(得分:1)

您可以利用python拥有的for...else构造。

with open("username") as f:
    for line in f:
        if username in line:
            print("correct")
            break
    else:
        print("incorrect")

如果程序自然退出,则运行else块 - 不会从循环中退出。

答案 1 :(得分:0)

如果您不喜欢传统的for循环,那么我建议您使用此解决方案:

with open("username") as f:
    isInList = [username in line for line in f]:
    if any(isInList):
        print ("correct")
    else:
        print("incorrect")

答案 2 :(得分:0)

实现这一目标的一种方法是在找到匹配后简单地返回。使用return并将逻辑封装到函数中将允许您使用result执行其他操作。另外,我建议使用with语句打开文件,因为它有更好的错误处理,并自动处理关闭文件和清理。 Here是关于with声明的简短教程。

username = input("enter username: ")
def read_file():
    with open("username", "r") as f:
        for line in f:
            if username in line:
                return "correct"
        else:
            return "incorrect"
result = read_file()
print(result)
# Or do whatever else you want with the result