首页 > 解决方案 > 我需要在 Python 中为我的登录系统读取一个 json 文件

问题描述

我正在努力阅读 json 文件并检查用户名是否已注册以及密码是否正确。我试着自己做,但是当用户名和密码在第一行时它才起作用。请帮忙:

import json


print("LoginSystem @mvtthis")
myRL = input("Login or Register?")


if myRL == "Register":
    User = input("Username:") 
    PW = input("Password:")
    PW1 = input("Confirm Password:")

    if(PW == PW1):
        print("Registration successfully.")
        
        with open('LoginSystemData.json', 'a') as f:      
                f.write("\n" + User + "," + PW)
                
    else:
        print("Registration failed! Please confirm your Password correctly.") 

if myRL == "Login":
    User = input("Username:") 
    PW = input("Password:")
    success = False
    with open('LoginSystemData.json', 'r') as f: 
        for i in f:
            a,b = i.split(",")
            b = b.strip()
            a = a.strip()
            if(a==User and b==PW):
                print("Login successful")
            else:
                print("Login failed. Wrong Username or Password.")     
            f.close() 
            break

标签: pythonjson

解决方案


它对我有用:试试这个

...

if myRL == "Login":
    User = input("Username:") 
    PW = input("Password:")
    with open('LoginSystemData.json', 'r') as f: 
        readable = f.read() # --> you need to readable:str your file
        lines = readable.splitlines() # --> ['name,pw','name,pw','name,pw']
        user = list(filter(lambda l:l.split(',')[0] == User and l.split(',')[1] == PW,lines))
        if user:
               print("Login successful")
        else:
               print("Login failed. Wrong Username or Password.")     
        f.close()

实际上 filter() 像 for 循环一样:如果你想检查它:https ://www.w3schools.com/python/ref_func_filter.asp


推荐阅读