我有一个类为游戏中的玩家服务,创建他们和其他东西。
我需要将这些播放器对象保存在一个文件中以供以后使用。我已经尝试过 pickle 模块,但我不知道如何保存多个对象并再次加载它们?有没有办法做到这一点,或者我应该使用其他类(如列表)并将我的对象保存和加载到列表中?
有没有更好的办法?
最佳答案
对 Tim Peters' accepted answer 的两个补充.
首先,如果在文件末尾停止加载,则无需单独存储 pickle 的项目数:
def loadall(filename):
with open(filename, "rb") as f:
while True:
try:
yield pickle.load(f)
except EOFError:
break
items = loadall(myfilename)
这假设文件只包含 pickle ;如果里面还有其他东西,生成器会尝试将里面的其他东西也视为 pickle ,这可能很危险。
第二,这样你得到的不是列表而是generator .
这一次只会将一项加载到内存中,这很有用
如果转储的数据非常大 - 您可能的一个可能原因
一开始就想分别 pickle 多个项目。
您仍然可以使用 for
循环遍历 items
,就好像它是
一个列表。
关于python - 在 pickle 文件中保存和加载多个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20716812/