【发布时间】:2015-05-30 11:27:12
【问题描述】:
我正在用 Python 编写一个使用保存文件功能的游戏。我编写了一个函数,可以将所有必要的变量、字符串、列表和字典保存到文件中。总而言之,当我调用我编写的名为“load()”的函数时,需要导入 11 项内容。
这里是load():
def load():
importedData = open("saveGame.dat", "r+").readlines()
for x in range(0,len(importedData)):
position = importedData[0]
health = importedData[1]
strength = importedData[2]
exp = importedData[3]
playerLevel = importedData[4]
# playerSpells = []
# spellsFromSaveFile = importedData[5]
# This doesn't work!
playerClass = importedData[6]
seenDialogues = importedData[7]
rank = importedData[8]
playerItems = importedData[9]
itemDesc = importedData[10]
specialItems = importedData[11]
return position, health, strength, exp, playerLevel, playerSpells, playerClass, seenDialogues, rank, playerItems, itemDesc, specialItems
这是保存文件的样子:
2
24
4
96
1
['Blink']
None
2
Frajan
[]
{}
{}
大部分字典和列表将是空白的,因为它们用于在游戏后期拾取的物品(此保存文件是在游戏早期创建的)。
虽然我需要导入几个列表和字典,但我将专注于其中一个。列表playerSpells 在保存文件“saveGame.dat”中保存为['Blink']。
这是我尝试过的:
我已将该列表导入到名为 playerSpells 的列表中:
playerSpells = []
playerSpells = importedData[5]
print(playerSpells)
print(playerSpells) 行返回:
['Blink']
这似乎有效,所以我添加了以下循环:
playerSpells = []
playerSpells = importedData[5]
for x in range(0,len(playerSpells)):
print(playerSpells[x])
但是得到了这个:
[
'
B
l
i
n
k
'
]
所以,我的问题是:我将如何将一个列表从一个文件导入另一个列表 - 但将单词添加到列表中,而不是单个字符?
任何帮助表示赞赏。
【问题讨论】:
-
你最好使用例如
pickle保存实际对象,而不是将它们全部写成文本表示。唯一的缺点是该文件不是人类可读的。 -
@jonrsharpe 我读到了
pickle,并考虑过使用它,但目前我正在修复保存文件,它们需要可读,所以我可以调整一些东西!如果我对它们进行排序,我可以使用pickle。 -
您也可以使用 JSON。像泡菜和人类可读的作品。当然可以用其他所有语言阅读。
-
很公平。看起来你真的可以用一个类来存储所有这些相关的变量,你也可以使用
pickle来存储和重新创建。
标签: python python-3.x