Python 从文本文件中读取特定行,然后检查它是否';s等于字符串变量?
我正在尝试创建一个登录系统。用户创建他们的帐户并输入他们想要使用的用户名和密码 用户名存储在新文本文件的第1行中 密码存储在文本文件的第2行 现在,我打开文件并使其可读Python 从文本文件中读取特定行,然后检查它是否';s等于字符串变量?,python,python-3.x,authentication,readline,readlines,Python,Python 3.x,Authentication,Readline,Readlines,我正在尝试创建一个登录系统。用户创建他们的帐户并输入他们想要使用的用户名和密码 用户名存储在新文本文件的第1行中 密码存储在文本文件的第2行 现在,我打开文件并使其可读 user\u file=open(“user1.txt”、“r”) 然后我让用户输入前面创建的用户名 username\u login=input(“输入用户名”) 现在我想检查提交的用户名是否是第1行中存储的用户名 if user_file.readline(1) != username_login: prin
user\u file=open(“user1.txt”、“r”)
然后我让用户输入前面创建的用户名
username\u login=input(“输入用户名”)
现在我想检查提交的用户名是否是第1行中存储的用户名
if user_file.readline(1) != username_login:
print("Incorrect username")
else:
password_login = input("Enter Password ")
如果提交的用户名正确,它将匹配第1行,因此打印else语句。但是我总是收到“不正确的用户名”反馈假设文件只包含两行,您可以做的是提取用户名和密码,然后将它们与输入的数据进行比较。例如:
with open('user1.txt') as f:
username, password = f.read().splitlines()
# now compare username and password with input data
使用
for
循环浏览文件:
for line in user_file.readlines():
if line[0] == username:
#do something
正如Ryan所说,这绝对不是现实中管理登录的方式,但假设这只是在练习python 首先,请注意python索引从0开始,因此第一行称为第0行。我也不相信readline()接受一个参数来让它做你想做的事情。相反,一种解决方案可以是将文件内容存储到一个可以编制索引的列表中:
lines = user_file.readlines()
username_login = input("Enter username ")
if lines[0].strip('\n') != username_login:
print("Incorrect username")
else:
password_login = input("Enter Password ")
然后要访问密码,您可以执行
行[1]
强制性注释,说明这是创建登录系统的一种极不安全的方式。您永远不希望以纯文本形式存储用户凭据。如果这是生产性的,而不仅仅是学术性的练习,请在存储密码之前对密码进行哈希处理,然后将用户输入的哈希值与存储的哈希值进行比较。是的,这是学术性的练习,但我期待着学习如何散列密码,当我完成,所以我可以改进程序好,这是有意义的。我了解到readline()中的数字是限制字节缓冲区。虽然我尝试了您推荐的方法,但如果第[0]行!仍然返回“不正确的用户名”行=user\u file.readlines()username\u login=输入(“输入用户名”)username\u login:print(“不正确的用户名”)else:password\u login=input(“输入密码”)哦,对不起,我忘了读像这样的行还包括行尾的换行符。我已经编辑了代码以删除它,因此它现在可以工作了