【问题标题】:How do I load the username from a csv file?如何从 csv 文件加载用户名?
【发布时间】: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":

标签: python file


【解决方案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 是必需的。
猜你喜欢
  • 2017-10-21
  • 1970-01-01
  • 1970-01-01
  • 2021-05-07
  • 1970-01-01
  • 2020-01-11
  • 1970-01-01
  • 2011-02-02
  • 1970-01-01
相关资源
最近更新 更多