2017-04-19 37 views
1

我在python中爲我的遊戲創建了一個排行榜,我希望它能夠保存,以便我可以在下次打開遊戲時檢索它。如何將數組保存到python文件中

Leader_board = [] 
Temp_Leader_board = [] 

PlayerName = str(No1+No2+No3+No4+No5+No6+No7+No8) 
Array = [str(Deaths),PlayerName] 
Temp_Leader_board.append(Array) 
Leader_board = sorted(Temp_Leader_board, key=lambda player: player[0]) 

最後一行是將評分從最小到最大。

+0

你有兩個主要選擇。您可以將每個元素以自定義格式存儲在列表中。或者你可以使用['pickle'](https://docs.python.org/3/library/pickle.html)將你的列表序列化到一個文件中。 –

+0

順便說一句,我們把它們稱爲Python中的列表,而不是數組。 – Novel

回答

1

由於@matusko和@Christian院長說,你在找什麼是系列化,其中Python有一個內置的模塊被稱爲泡菜。就個人而言,因爲這看起來像一個更簡單的序列化用例,所以我建議去cPickle,它與pickle做同樣的事情,但速度更快,因爲它是用C寫的。See here關於如何使用它們來序列化不同類型的數據。

0

聽起來就像你正在尋找一種序列化你的列表的方式,以便它可以保存到一個文件,然後在以後回讀。對於序列化python對象,可以使用python模塊picklereference page)。有關寫入和讀取文件的信息,請查看here

1

我的簡單序列化首選解決方案是yaml。它具有人類可讀性的優點,但具有僅能夠序列化簡單數據結構的缺點。它看起來像它會在這種情況下正常工作:

測試代碼:

leader_board = [ 
    [30, 'Player A'], 
    [10, 'Player B'], 
] 

import yaml 

# save the leader board 
with open('LeaderBoard.yml', 'w') as f: 
    f.write(yaml.dump(leader_board)) 

# read the leader board from yaml file 
with open('LeaderBoard.yml', 'r') as f: 
    read_leader_board = yaml.load(f.read()) 

# show yaml format and restored data 
print(yaml.dump(leader_board)) 
print(read_leader_board) 

結果:

- [30, Player A] 
- [10, Player B] 

[[30, 'Player A'], [10, 'Player B']] 
相關問題