Python CSV文件登录系统不工作
大家好 我是python新手,因为我刚开始在学校学习python。 我的问题是,我总是收到登录失败的错误消息。关于如何解决这个问题有什么建议吗?Python CSV文件登录系统不工作,python,Python,大家好 我是python新手,因为我刚开始在学校学习python。 我的问题是,我总是收到登录失败的错误消息。关于如何解决这个问题有什么建议吗? 非常感谢正如@David所说,除非登录成功,否则您的循环将始终重试 此外,您应该将file.close()放在finally块中,以防止代码出错与将自动执行此操作,在文件超出范围时安全关闭文件 您的代码似乎没有使用csv模块,但稍后可能会在代码中使用它 import csv def login():
非常感谢正如@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在此关闭
#用户在此登录应成功!
您可以通过额外的案例处理来进一步改进这一点,例如
- 处理
丢失的csv文件将引发的IOError
错误open()
- 仅允许已知次数的重试(将参数减1,并检查是否正确,除非CSV文件中的第一个登录是您要查找的登录,否则在循环的第一次迭代中,比较将为
。如果您找到用户名和密码元组打印成功文本,则应迭代CSV中的所有行,否则在循环结束后打印失败text.非常感谢。正如我所说,我才刚刚开始学习它,仍然在学习基础知识!这将帮助我永无止境。再次感谢您,祝您好运!与您的问题无关。但这可能有助于您加深Python的根基:false
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!