Python CSV文件登录系统不工作

Python CSV文件登录系统不工作,python,Python,大家好 我是python新手,因为我刚开始在学校学习python。 我的问题是,我总是收到登录失败的错误消息。关于如何解决这个问题有什么建议吗? 非常感谢正如@David所说,除非登录成功,否则您的循环将始终重试 此外,您应该将file.close()放在finally块中,以防止代码出错与将自动执行此操作,在文件超出范围时安全关闭文件 您的代码似乎没有使用csv模块,但稍后可能会在代码中使用它 import csv def login():

大家好

我是python新手,因为我刚开始在学校学习python。 我的问题是,我总是收到登录失败的错误消息。关于如何解决这个问题有什么建议吗?
非常感谢

正如@David所说,除非登录成功,否则您的循环将始终重试

此外,您应该将file.close()放在
finally
块中,以防止代码出错<代码>与将自动执行此操作,在文件超出范围时安全关闭文件

您的代码似乎没有使用
csv
模块,但稍后可能会在代码中使用它

import csv

def login():                                         #defining subroutine login
    searchusername = input("Enter your username: ")  #Login code
    searchpassword = input("Enter your password: ")

    csvreader = open("usercsv.csv", "r")
    for row in csvreader:
        details = row.split(",")
        if  details[0] == searchusername and details[1]== searchpassword:
            print("Login succesful")
        else:
            print("Login unsuccesful. Try again.")
            login()


    csvreader.close()
def登录(backend_csv=“usercsv.csv”): searchusername=输入(“输入您的用户名:”) searchpassword=输入(“输入密码:”) 开放式(后台_csv,“r”)作为fh: 对于fh.read().split('\n')中的行: 如果列(行)<2:#跳过空行/垃圾行 持续 详细信息=行分割(“,”) 尝试: 如果详细信息[0]==搜索用户名和详细信息[1]==搜索密码: 打印(“登录成功”) 中断#从for循环中退出 除索引器外:#详细信息没有至少两个成员 打印(“csv中损坏的行:{}”。格式(行)) else:#for循环没有中断 打印(“登录失败:请重试”) 登录(后端\u csv=后端\u csv) #当with块超出范围时,csv在此关闭 #用户在此登录应成功! 您可以通过额外的案例处理来进一步改进这一点,例如

  • 处理
    IOError
    丢失的csv文件将引发的
    open()
    错误

  • 仅允许已知次数的重试(将参数减1,并检查是否正确,除非CSV文件中的第一个登录是您要查找的登录,否则在循环的第一次迭代中,比较将为
    false
    。如果您找到用户名和密码元组打印成功文本,则应迭代CSV中的所有行,否则在循环结束后打印失败text.非常感谢。正如我所说,我才刚刚开始学习它,仍然在学习基础知识!这将帮助我永无止境。再次感谢您,祝您好运!与您的问题无关。但这可能有助于您加深Python的根基:
    def login(backend_csv="usercsv.csv"):
        searchusername = input("Enter your username: ")
        searchpassword = input("Enter your password: ")
    
        with open(backend_csv, "r") as fh:
            for row in fh.read().split('\n'):
                if len(row) < 2:  # skip empty/trash rows
                    continue
                details = row.split(",")
                try:
                    if details[0] == searchusername and details[1] == searchpassword:
                        print("Login successful")
                        break  # escape from the for loop
                except IndexError:  # details did not have at least two members
                    print("corrupt line in csv: {}".format(row))
            else:  # for loop did not break
                print("login failed: please try again")
                login(backend_csv=backend_csv)
    
        # csv closed here when with block goes out of scope
        # user login should be successful here!