【发布时间】:2019-10-21 00:13:54
【问题描述】:
我正在制作一个用户系统。我需要将用户名和密码存储在一个文件中。
案例 1:如果现有用户 = 我需要阅读用户名和密码来检查现有用户。 我需要检查密码是否与键入的值和字典值匹配。
案例 2:如果新用户= 我需要检查用户名是否已存在于数据库中。 如果没有,我需要在现有文件中附加用户名和密码而不覆盖。
这里的问题,我在这里使用了json,但它似乎覆盖了现有的dict。
我尝试写入一个简单的文本文件,但在读取文件时遇到问题,以及在案例 2 中检查用户名是否存在时遇到问题。
# Login System Management
import json
class LoginSystem:
def __init__(self): # Opening and reading the registered users json.file
self.users = json.load(open("Users.json"))
self.login_screen()
def login_screen(self): # Log on screen to verify new or old user.
while True:
main_log = input("Are you new user?\n[Y]es or [N]o: ")
if main_log == "Y":
self.new_user()
break
elif main_log == "N":
self.old_user()
break
else:
print("Invalid answer.\n")
def old_user(self): # Log in screen if old user.
while True:
user_id = input("Please enter your user id: ")
user_password = input("Please enter your password: ")
if len(user_id) <= 64 and len(user_password) <= 64 and self.check_system(user_id, user_password):
print("Logging In")
break
else:
print("Wrong password or username!\n")
def check_system(self, name, password): # Checking system to verify old user id and password.
data = self.users
try:
expected_password = data[name]
except KeyError:
return False
if password != expected_password:
return False
return True
def new_user(self): # Log in screen if new user.
while True:
print("\nMax Length is 64 chars.")
reg_id = input("Register your username: ")
reg_password = input("Key in password: ")
if len(reg_id) <= 64 and len(reg_password) <= 64:
if reg_id not in self.users:
print("Loading.....")
self.update_database(reg_id, reg_password)
print("Registered Successfully.")
break
else:
print("User already registered!\n")
self.old_user()
break
else:
print("Error. Max Length is 64 chars.\n")
def update_database(self, new_user_name, new_user_password): # Writing new username and password to json.file
new_username = new_user_name
new_password = new_user_password
field = [new_username, new_password]
with open("Users.json", "w") as f:
json.dump(field, f)
check = LoginSystem()
【问题讨论】: