簡體   English   中英

在 Python 的文本文件中保存多個用戶輸入

[英]Saving multiple user inputs in text file in Python

我對 Python 相當陌生,並且正在嘗試這個項目。 我需要將用戶名和密碼存儲在文本文件中(以創建數據庫)。 我使用了泡菜模塊。 每次運行代碼時,我嘗試過的代碼都會刪除以前存儲的數據。

我知道我必須將 append 數據寫入文件而不是寫入文件,但我不知道如何。 如何更正代碼?

import pickle
# pickle mod converts obj into byte stream to store in database
import time

def load_Dictionary():
    try :
        with open("UserDict.txt" , "rb") as ufile :
            return pickle.load(ufile)
    except IOError :
        with open("UserDict.txt" , "ab") as ufile :
            pickle.dump(dict() , ufile)
            return dict()

def save_Dictionary(UserDict):
    with open("UserText.txt" , "wb") as ufile :
        pickle.dump(UserDict , ufile)

def new_User_Login():
    userDict = load_Dictionary()  # dictionary is loaded
    checkUserAcc = input("Are you a new user ( Yes or No ) ? ")
    # insert buttons for yes no
    # tk.Button(window, text="", command=password_generator).pack(pady=10)

    if (checkUserAcc == "Yes" or checkUserAcc == "yes" or checkUserAcc == "YES"):
        username = input("Please enter your username : ")
        Root_password = input ("Please enter your password :")
        if ( username in userDict):
            print("Username you entered is not available")
            new_User_Login()
        else :
            userDict[username] = Root_password
            print("Login Successful!")
            save_Dictionary(userDict)  # saves new login info
            time.sleep(2.0)

    elif (checkUserAcc == "No" or checkUserAcc == "no" or checkUserAcc == "NO") :
        user_login()

    else :
        print("Invalid input! Try Again.")
        new_User_Login()

def user_login():
    global username
    global Root_password
    global tries
    login_Username = input("Enter your Username : ")
    login_Password = input("Enter your Password : ")
    UserDict = load_Dictionary()
    if ( tries < 5):
        for key in UserDict:
            if (login_Username == key and login_Password == UserDict[key]):
                print("You have successfully logged in !")

            else :
                print("Login Failed! Please try again")
                tries = tries + 1
                user_login()

            if( tries >= 5 ):
                print("You have attempted login too man times. Try again later. ")
                time.sleep(30.0)
                tries = 1    # reset tries counter
                user_login()

global tries
tries=1
new_User_Login()

看來您在此 function 中使用的是"wb"而不是"ab" ,這導致文件在您每次希望保存時都會重置。 此外,文件名應該是"UserDict" ,而不是"UserText"

def save_Dictionary(UserDict):
    with open("UserDict.txt" , "ab") as ufile:        
        pickle.dump(UserDict , ufile)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM