2017-07-16 107 views
0

我正在創建一個數學測驗,需要將分數添加到登錄表。該文本文件的行看起來是這樣的:姓名,用戶名,密碼編輯文本文件特定行

,如果你能,所以它看起來像這樣編輯的行我想知道:姓名,用戶名,密碼,Attempt1 = 12

名稱,用戶名,密碼,Attempt1 = 12,ATTEMPT2 = 23等

感謝您的幫助亞當

順便說我這是怎麼找到這行:

lookup = Name 
with open("users.txt") as myFile: 
    for num, line1 in enumerate(myFile, 1): 
     if lookup in line1: 
      line = line1 
+1

讓自己熟悉字典和json庫,這個任務會更容易。 –

回答

0

雖然這可能不是一個答案我反正張貼它。如果這不符合您的需求,請不要考慮。僅僅是我的評論的一個例子。

這是另一種存儲信息的方式。 想到一個字典的所有鍵的用戶名:

usernames.json

{ 
    "johnny": { 
     "name": "John Doe", 
     "password": "123", 
     "attempts": [ 
      12, 
      23 
     ] 
    }, 
    "foo": { 
     "name": "Bar", 
     "password": "345", 
     "attempts": [] 
    } 
} 

然後,您可以通過腳本(script.py)加載數據

import json 

with open("usernames.json") as f: 
    mydict = json.load(f) 

讀數據:

print(mydict.keys()) # prints ["johnny","foo"] 
print(mydict["johnny"]["attempts"]) #prints [12,23] 

並添加數據:

mydict["newuser"] = {"name":"hello","password":891,"attempts":[]} #adds new user 
mydict["johnny"]["attempts"].append(15) # adds new attempt 

和轉儲回的字典:

with open('usernames.json', 'w') as outfile: 
    json.dump(mydict, outfile, indent=4) 
0

其實問題不是特定於Python的。首先將文本文件(原則上)讀入內存,然後修改內存內容並將其寫回。

在文件中尋找某個位置並在其中寫入內容是有可能的,但這會給您帶來更多問題。

您需要解決的第一件事是文件是否可以被更多的用戶同時訪問。如果是,請想象兩個用戶想要讀取 - 修改 - 寫回的情況。其中一個值可能「消失」。任何文件都是如此,包括推薦的.json解決方案。

我建議在您的應用程序中引入另一個層 - 將對對象(或函數)中的值進行修改 - 這會隱藏它的完成方式。稍後,您可以修改此實現以使用JSON或數據庫等。

如果更多的用戶可以同時訪問數據,那麼簡單的解決方案就是爲每個用戶(一種簡單的數據庫)使用一個帶有單獨文本文件的目錄。