2013-12-17 34 views
1

我正在製作一個程序,用於記錄用戶在玩遊戲時的行爲,並根據該數據提高其性能{(用戶在發生這種情況時做出此動作):(做這個)}。 問題是我將所有數據都存儲在單獨模塊的字典中,所以如果關閉程序,所有內容都將恢復爲默認值。如何永久修改python中的字典?

請告訴我是否有更好的方法來存儲數據,或永久重寫程序的方式。

一如既往的感謝。

回答

3

將它存儲在文件中是一種選擇。 Python附帶一個Pickle模塊,它允許你醃你的字典。然後將其存儲在本地磁盤上,然後在需要再次加載時,使用Pickle在再次啓動遊戲時加載它。

編輯:

至於建議由@alko,該shelve模塊會在你的情況是更好的選擇,因爲你正在使用的數據已經是一本字典。

例如,假設你有一些代碼,看起來像

data = {} 
data["coords"] = [1,2] 

您可以輕鬆地將其轉換成一個shelf通過簡單地改變一行,並添加另一個(可能是一個過於簡單化)

data = shelve.open("some_filename") # create a shelf instead 
data["coords"] = [1,2] 
data.close()      # remember to close it 

現在,您擁有持久性存儲而無需更改任何字典訪問代碼。

請注意,如果您指定的文件名已經存在,它將會打開它並允許您讀/寫,所以您不需要任何額外的邏輯來區分第一次玩遊戲的玩家和玩家繼續前一屆會議。

+2

大概,[擱置](http://docs.python.org/2/library/shelve.html)是一個比較好的參考文獻 – alko

+0

@alko我以前沒見過擱置,但看過後它看起來很像像Zeppo可以簡單地用一個位置(理想情況下)的一個架子來代替字典實例化,現在你突然擁有持久存儲。 – MxyL