Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/349.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从文本文件中读取特定行,然后检查它是否';s等于字符串变量?_Python_Python 3.x_Authentication_Readline_Readlines - Fatal编程技术网

Python 从文本文件中读取特定行,然后检查它是否';s等于字符串变量?

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

我正在尝试创建一个登录系统。用户创建他们的帐户并输入他们想要使用的用户名密码

用户名存储在新文本文件的第1行中

密码存储在文本文件的第2行

现在,我打开文件并使其可读

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(“输入密码”)哦,对不起,我忘了读像这样的行还包括行尾的换行符。我已经编辑了代码以删除它,因此它现在可以工作了