我有一个职业,在游戏中为玩家服务,创造他们和其他东西.

我需要将这些播放器对象保存在一个文件中,以便以后使用.我try 过pickle模块,但我不知道如何保存多个对象并再次加载它们?有没有办法做到这一点,或者我应该使用列表等其他类,并在列表中保存和加载我的对象?

有更好的办法吗?

推荐答案

使用列表、元组或dict是迄今为止最常用的方法:

import pickle
PIK = "pickle.dat"

data = ["A", "b", "C", "d"]
with open(PIK, "wb") as f:
    pickle.dump(data, f)
with open(PIK, "rb") as f:
    print pickle.load(f)

上面印着:

['A', 'b', 'C', 'd']

然而,pickle文件can包含任意数量的pickle.下面是产生相同输出的代码.但请注意,书写和理解起来更难:

with open(PIK, "wb") as f:
    pickle.dump(len(data), f)
    for value in data:
        pickle.dump(value, f)
data2 = []
with open(PIK, "rb") as f:
    for _ in range(pickle.load(f)):
        data2.append(pickle.load(f))
print data2

如果你这样做,你就有责任知道你写的文件里有多少腌菜.上面的代码通过首先清除列表对象的数量来实现这一点.

Python-3.x相关问答推荐

循环遍历数据框以提取特定值

以编程方式关闭jupyterlab内核

根据另一列中的条件填写该列中的值

与 pandas 0.22 相比,pandas 2.0.3 中的 df.replace() 会抛出 ValueError 错误

错误:无法为 pyconcorde 构建轮子,这是安装基于 pyproject.toml 的项目所必需的

我可以设置树视图层次 struct 按钮吗?

CSV-DAT 转换时将引号添加到数据中

torch.stack([t1, t1, t1], dim=1)与torch.hstack([t1, t1, t1])之间有什么区别?

Python 列表求和所有出现的保留顺序

SMTP 库 Python3:不太安全的应用程序访问

无法使用 Python 和 Selenium 检索 href 属性

如何使用 Selenium by class_name 从大学橄榄球数据中抓取图像 url 列表

使用 Python 3 按行进行分析

如何在 Python 3 中通过 IP 获取 WhoIs 信息?

pysftp vs. Paramiko

Python中的依赖倒置

使用 Sublime Text 3 在 Python 3 中打印 UTF-8

BeautifulSoup 的 Python 3 兼容性

python - 使用 matplotlib 和 boto 将绘图从内存上传到 s3

Windows 下 Python 3.x 的 OpenCV