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

时间:2019-03-21 10:15:15

标签: python python-3.x project

我正在做一个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

2 个答案:

答案 0 :(得分:0)

我假设.csv文件包含用户名和密码的列表,这就是循环浏览文件的原因。

首先,我认为您的条件不正确。如果login == True,您当前失败了吗?不确定为什么会这样。

此外,更大的问题是循环。它会覆盖正确的数据。

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

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

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

答案 1 :(得分:0)

这就是你想要的

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

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")