如何从 csv 文件加载用户名?

Posted

技术标签:

【中文标题】如何从 csv 文件加载用户名?【英文标题】:How do I load the username from a csv file? 【发布时间】:2019-02-27 20:04:00 【问题描述】:

我在学校的计算机科学中学习了如何使用 python 创建文件。我创建了一段代码,您可以在其中创建用户名和密码,然后将其保存到 csv 文件中。还有另一个选项可以登录。它要求您输入用户名,如果输入错误,它会显示“找不到用户名”。无论我输入什么(即使它是正确的),它都会显示找不到用户名。 这是代码的主要部分:

Log = input("Enter Choice here: ")
if Log == "Log In" or Log == "log in" or Log == "Log in" or Log == "log In":
    Data = open("F:\\'Filename'.csv", "r")
    SavedUser = Data.readline()
    Username = input("Username: ")
    if Username == SavedUser:
        print("Welcome", Username, "!")
        Password = input("Password: ")
        if Password == Data.readline():
            print("It works")

感谢您的所有帮助。

【问题讨论】:

你为什么不打印 SavedUser 和 Username 来看看你得到了什么? 顺便说一句,按照惯例,Python 编码人员对变量和类属性使用小写字母,对类使用 CamelCase。大写的常量。 您不会检查 CSV 中的每个元素。 简化为if Log.lower() == "log in": 见PEP 8 - Style Guide for Python Code。 【参考方案1】:

您的 CSV 文件可能没有被正确读取。 Python 有一个 csv 库来正确解析 CSV 文件。您可以做的是将 CSV 文件读取到字典中,然后比较用户名和密码。

import csv
action = input("Enter Choice here: ")
if action.lower() == "Log In".lower(): #Convert both strings two lowercase and then compare
    reader = csv.reader(open('demo.csv', 'r')) #parsing the csv file correctly
    user_dict = dict(reader) #converting iterable reader directly to a dictionary
    #'abc': 'abc123', 'username': 'password'
    username_input = input("Username:")
    if username_input in user_dict: #check if username exists as a key in the dictionary
        print("Welcome", username_input, "!")
        password_input = input("Password: ")
        if password_input == user_dict[username_input]:
            print("It works")

【讨论】:

我收到此错误:Traceback(最近一次调用最后一次):文件“F:\TDA Casino.py”,第 17 行,在 user_dict = dict(reader) ValueError: dictionary update sequence元素 #0 的长度为 1; 2 是必需的。

以上是关于如何从 csv 文件加载用户名?的主要内容,如果未能解决你的问题,请参考以下文章

如何更新CSV文件中的特定位置?

如何使用 elixir/phoenix 从 csv 文件导入用户?

如何将特定数据字段从 ArrayList 加载到某些 JTextFields?

如何在streamlit中从用户读取csv文件并转换为pandas数据框

如何从 csv 文件中读取数据并将其存储在数据库中?弹簧靴

Django Admin——批量员工用户创建/从 CSV 文件导入