我如何才能使一个基本的程序,允许有人登录到以前创建的帐户?

2024-10-17 06:24:58 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试制作一个允许用户注册或登录的python程序,目前我正在创建一个文件来存储每个用户名及其密码。现在,它没有写入文件,我想知道是否有人能告诉我我做错了什么。请原谅我,如果这是一个愚蠢的错误,我不是很有经验的python,但我仍然可以做一个基本的程序。这是我的密码:

# -*- coding: utf-8 -*-
from time import sleep

def signin():
  usrlist = open("users.txt", 'w+')
  complete = False
  while (complete == False):
    usr = raw_input("Username: ")
    pwd = raw_input("Password: ")
    usrinfo = (usr + ":" + pwd)
    if (usrinfo in usrlist.read()):
        print("Welcome back " + usr + ".")
        complete = True
    else:
        print("Username or Password incorrect. Please try again.")
def signup():
  usrlist = open("users.txt", 'w+')
  usravailable = False
  while (usravailable == False):
    newusr = raw_input("Please choose a Username: ")
    if (newusr in usrlist.read()):
        print("Username taken. Please choose again.")
    else:
        usravailable = True
  newpwd = raw_input("Please choose a password: ")
  oldusrlist = usrlist.read()
  usrlist.write(oldusrlist + newusr + ":" + newpwd + ".")
  print("Thank You. Please Sign in.")
  signin()

print("Please Choose An Option:")
print("1. Sign In")
print("2. Sign Up")
inorup = input()
if (inorup == 1):
    signin()
elif (inorup == 2):
    signup()

另外,如果你有任何关于我如何能做的不同,或更好的建议(即使它使用不同的语言),谢谢你,我感谢你的帮助。你知道吗

编辑: 如果有人能告诉我如何使用JSON、javascript或多个文件来执行这样的程序,这些文件可以存储有关每个帐户的大量数据,请在注释或答案中告诉我如何操作。我很感激你的帮助。你知道吗


Tags: 文件in程序falsereadinputrawif
2条回答

下面是一种使用json的方法

import json
import os

FILENAME = "./f.json"

# init the data file

def init_data():
    with open(FILENAME, "wb") as f:
        json.dump({}, f)

def load_content():
    with open(FILENAME) as f:
        infos = json.load(f)
    return infos

def save_content(content):
    with open(FILENAME, "w+") as f:
        json.dump(content, f)
    return True

def save_info(username, password):
    infos = load_content()
    if username in infos:
        return False
    infos[username] = password
    save_content(infos)
    return True


def sign_in(username, password,):
    status = save_info(username, password)
    if not status:
        print "username exists"

def login(username, password):
    infos = load_content()
    if username in infos:
        if password == infos[username]:
            print "login success"
            return True
        else:
            print "password wrong"
            return False
    else:
        print "no user named %s" %username


if __name__ == "__main__":    
    # here is some simple test    
    os.system("rm -f %s" %FILENAME)
    if not os.path.exists(FILENAME):
        init_data()

    # login fail
    login("hello","world")

    # sign_in
    sign_in("hello", "world")

    # login success
    login("hello","world")

    # sign_in fail
    sign_in("hello", "world")

    # login fail
    login("hello", "hello")   

要解决不保存问题,您需要做两个更改: 1) 在signin()例程中,更改行'usrlist=open('用户.txt“,'w+')”转换为'usrlist=open(”用户.txt“,'r')

2)在singup()例程中,在usrlist.write文件(oldusrlist+newusr+“:”+newpwd+“)”,添加:'usrlist.close公司()' 那你就可以看到那些东西被保存了。你知道吗

相关问题 更多 >