我有一个程序,我在其中询问用户其用户名和密码,并检查文件以查看他们是否具有正确的用户名和密码。每个用户名和密码都存储在自己的行中。
这就是我所拥有的
if username and password in open("logininfo").read():
print("logged in succesfully")
else:
print("Incorrect username or password")
我遇到的问题是任何用户名都可以与任何密码一起使用,因为它可以检查整个文件。有什么方法可以检查它们是否在文件中的同一行?
答案 0 :(得分:1)
您可以轻松地使此功能逐行检查文件
def check_password(username, password, lines):
for line in lines:
if username in line and password in line:
return True
return False
您可以通过以下方式使用此功能:
check_password(username, password, open(file_name).readlines())
答案 1 :(得分:0)
遍历open('logininfo').readlines()
,检查用户名是否在一行中,密码是否在一行中。
在if username and password in open("logininfo")
中,它检查字符串username
是否不为空或None
(这不是故意的),因此您需要分别检查用户名和密码,如下所示:< / p>
if (username in line) and (password in line):
...
资源:
答案 2 :(得分:0)
请注意,您的代码不会执行您认为的操作。它根本不会检查用户名,只会检查用户名是否为“ False”。
这就是您想要的:
def checkpw():
for line in open("foobar"):
if line == (username + " " + password):
print("logged in succesfully")
return
print("Incorrect username or password")
,但我强烈建议您对此类任务使用某种类型的库。您可能至少应该对密码进行哈希处理。这段代码是个糟糕的主意。
答案 3 :(得分:0)
您可以逐行检查它。完成操作后,别忘了关闭文件或在with
语句中打开文件以释放资源。
def check_user(user, password):
with open('loginfo', 'r') as file:
for line in file:
if user in line and password in line:
return True
return False