Python Can';t使用txt文件中的数据执行if语句

Python Can';t使用txt文件中的数据执行if语句,python,Python,我正在尝试制作一个基本的程序,让用户输入用户名和密码,如果它在一个文件中看到一个用户名和密码,它会输出“授予访问权限”,但是当与文件数据进行比较时,即使它们相同,密码也不会匹配 我已经尝试将数据保存密码设置为变量,但是没有成功 username = str(input('What is your username')) password = str(input('What is your password')) accountlogin = 0 file = open('login.txt','

我正在尝试制作一个基本的程序,让用户输入用户名和密码,如果它在一个文件中看到一个用户名和密码,它会输出“授予访问权限”,但是当与文件数据进行比较时,即使它们相同,密码也不会匹配

我已经尝试将数据保存密码设置为变量,但是没有成功

username = str(input('What is your username'))
password = str(input('What is your password'))
accountlogin = 0
file = open('login.txt','r')

for line in file:
   seperate = line.split(',')
   print(seperate[0])
   if username == seperate[0]:
      accountlogin = accountlogin + 1
for line in file:
   if password == seperate[1]:
      accountlogin = accountl`enter code here`ogin + 1
print(accountlogin)
if accountlogin == 2:
   print('Access Granted')

正确的用户名,使其等于3,这样密码位就不能工作了

循环两次有两个问题:

  • 在第一个循环之后,文件光标位于文件的末尾。没什么可吃的了。你可以回到起点,但是

  • 您可以检查用户名是否存在于文件中的任何位置,密码是否存在于文件中的任何位置。相反,您应该确保它们同时存在于同一记录中。所以把这两个条件放在同一个循环中

大概是这样的:

username = str(input('What is your username'))
password = str(input('What is your password'))
accountlogin = 0
file = open('login.txt','r')

for line in file:
   seperate = line.split(',')
   print(seperate[0])
   if username == seperate[0]:
      accountlogin = accountlogin + 1
   if password == seperate[1]:
      accountlogin = accountlogin + 1
print(accountlogin)
if accountlogin == 2:
   print('Access Granted')
甚至只是:

username = str(input('What is your username'))
password = str(input('What is your password'))
file = open('login.txt','r')

for line in file:
   separate = line.split(',')
   print(separate[0])
   if username == separate[0] and password == separate[1]:
      print('Access Granted')
      break

另外,必须注意的是,永远不要将密码存储在纯文本中

您可以使用下面的单个循环来实现

username = input('What is your username?')
password = input('What is your password?')
with open('login.txt','r') as f:
    for line in f:
       user_txt, pass_txt, *_ = line.split(',')
       print(user_txt)
       if username == user_txt and password == pass_txt:
          print('Access Granted')
          break
input()。我还使用
with
关键字打开
login.txt
文件。此线程用于了解有关
的更多信息

接下来,我们将拆分行,并从行中将前两个逗号分隔的字符串分别作为用户名和密码,并忽略行中其他逗号分隔的字符串(如果有)。

阅读有关调试代码的提示。为什么要使用两个for循环?您可以在第一个循环中检查用户名和密码。你为什么不把用户名和密码编码?