2016-11-09 84 views
-1

我正在爲一個項目生成一個基於回合的遊戲,並且希望創建一個用戶登錄系統,該用戶登錄系統將用戶的登錄用戶名和密碼保存到遊戲文件夾位置的文件中。我希望隨後使用記事本文件來檢查當新用戶嘗試創建登錄時是否已有該用戶名的帳戶。將用戶詳細信息保存到登錄系統的文件中?

在這段代碼中,我試過這個,但它是錯誤的?!

filename = 'UserInfo.txt' 
openfile = open(filename, "r")               
UserData = openfile.readline() 
def displayMenu(): 
    print (UserData) 
    status = input("Are you a registered user? y/n? ") 
    if status == "y": 
     oldUser() 
    elif status == "n": 
     newUser() 

def newUser(): 
    createLogin = input("Create login name: ") 

    if createLogin in UserData: 
     print ("Login name already exist!") 
    else: 
     createPassw = input("Create password: ") 
     UserData[createLogin] = open('UserInfo','w') 
     print("User created!")  
def oldUser(): 
    login = input("Enter login name: ") 
    passw = input("Enter password: ") 
    if login in UserData and UserData[login] == passw: 
     print ("Login successful!") 
    else: 
     print ("User doesn't exist or wrong password") 
displayMenu() 
+0

我們不知道這是否是錯誤的,你需要告訴我們。您應該花時間閱讀規則[幫助],[mcve]和[faq]。 –

+0

我說過這是錯誤的,我只是問是否有人可以修復代碼,以便將用戶詳細信息保存到記事本文件中? – Sam

+0

是的,但你沒有告訴我們什麼是錯的。它不保存名字嗎?它會拋出一個錯誤嗎?格式錯誤?你的老師不接受它做作業嗎?我們不知道。 –

回答

1

你應該真的把錯誤信息,但我想我已經發現了什麼是錯的。在newUser()中,您正在打開'UserInfo'而不是'UserInfo.txt'也以非w模式打開。所以寫open('UserInfo.txt', 'a')

您還需要閱讀所有的行不只是一條線openfile.readlines() 還記得你在讀模式打開後關閉該文件,否則它不會讓你寫它:

openfile = open(filename, "r") 
UserData = openfile.readline() 
openfile.close(); 
+0

謝謝,這似乎已修復它。 – Sam

+0

@Sam沒有問題^^ –

1

對於你需要閱讀所有行,而不是行,以便使用openfile.readlines()檢查if login in UserData文件。而且,無論何時創建新用戶,都需要將新用戶添加到文件中,而不是覆蓋文件中的現有數據。因此,而不是使用open('UserInfo.txt', 'w'),您需要打開a模式,如open('UserInfo.txt', 'a'),它會將新數據附加到文件的末尾。

+0

謝謝,這有幫助。 – Sam

相關問題