如何从 Python 中的 CSV 文件验证用户名和密码?

How to verify username and password from CSV file in Python?

我正在做一个 Python 项目,我必须从 csv 文件中验证我的用户名和密码,其中前两行和列的用户名和密码为 'hi'。

当前代码:

    answer = input("Do you have an account?(yes or no) ")
if answer == 'yes' :
   login = False
   csvfile = open("Username password.csv","r")
   reader = csv.reader('Username password.csv')
   username = input("Player One Username: ")
   password = input("Player One Password: ")
   for row in reader:
        if row[0]== username and row[1] == password:
           login = True
        else:
           login = False
   if login == False:
      print("Incorrect. Game Over.")
      exit()
   else:
      print("You are now logged in!")
else:
   print('Only Valid Usernames can play. Game Over.')
   exit()

CSV 文件:https://thecompton-my.sharepoint.com/:x:/g/personal/001422_thecompton_org_uk/EbhI4A12pg1EhMezOR8tOlgBF-iOh8JTAM3x3WUOk3i9Ig?e=AJktHi

我假设 .csv 文件包含一个用户名和密码列表,这就是您要遍历它的原因。

首先,我认为你的条件判断方式有误。如果 login == True,你目前失败了?不确定为什么会这样。

此外,更大的问题是你的for循环;它正在覆盖正确的数据。

例如,如果第一行与给定的凭据匹配,我们需要授权用户。但在您的情况下,循环将继续并继续检查其余行,覆盖 login 的值。所以当循环结束时,login的值是基于最后一行的

找到正确的用户名和密码后,您需要退出循环。

我还建议您首先从 csv 文件中创建一个用户名和密码字典 (dict),以使您的生活更轻松。

这就是你想要的

首先你登录逻辑错误 为了方便起见,我更改了文件名

import csv

login = False
answer = input("Do you have an account?(yes or no) ")

if answer == 'yes' :
   with open('upassword.csv', 'r') as csvfile:
      csv_reader = csv.reader(csvfile)
      username = input("Player One Username: ")
      password = input("Player One Password: ")

      for row in csv_reader:
         print(row[0], row[1])
         print(username, password)
         if row[0]== username and row[1] == password:
            login = True
            break
         else:
            login = False
            break

   if login == True:
      print("You are now logged in!")
   else:
      print("Incorrect. Game Over.")
      exit()    
else:
   print('Only Valid Usernames can play. Game Over.')
   exit()

我还有一些打印语句可以帮助你理解工作流程

并尽量避免打开这样的文件

csvfile = open("Username password.csv","r")