我有一个文件memory.txt,我想在第二行的字典中存储类武器()的一个实例
with open(memorypath(), "r") as f:
lines = f.readlines()
inv = inventory()
if "MAINWEAPON" not in inv or inv["MAINWEAPON"] == "":
inv["MAINWEAPON"] = f"""Weapon(sw, 0, Ability(0, "0"), ["{name}'s first weapon."], dmg=30, cc=20, str=15)"""
lines[1] = str(inv) + "\n"
with open(memorypath(), "w") as f:
f.writelines(lines)
(inventory和memorypath来自我的另一个实用程序函数文件)
不过,根据我所拥有的,如果我得到inv["MAINWEAPON"]
,我只会得到字符串,而不是类。我必须像字符串一样存储它,否则我会得到类似<__main\__.Weapon object at (hexadecimal path thing)>
的东西。
在获取inv["MAINWEAPON"]
时如何获取类本身?
还有一件事,我觉得我对换行符很困惑,因为memory.txt文件有6行,但被缩短为5行,请告诉我我是否做错了什么
我可以建议的一个最简单的方法是
dataclasses.asdict
,如前所述;或者,使用支持数据类的序列化库。有很多好的,但出于这个目的,我可能会建议dataclass-wizard。此外,如果要将任意JSON对象转换为数据类结构,可以使用附带的CLI工具。序列化时,它将自动应用一个键转换(snake_case
到camelCase
),但这也很容易自定义免责声明:我是此库的创建者(和维护者)
如果您有一个类,那么您可以将其表示为dict并将其保存为json格式
现在,您可以将该类作为json保存到如下文件中:
您可以像这样再次加载json:
更新
自从Python3.7以来,已经具备了创建数据类的可能性,我在这里给出了一个示例,说明如何使用它将类保存为json格式
如果您想将json文件用作数据库,并且能够向其追加新实体,那么您必须将该文件加载到内存中,并追加新数据,最后覆盖旧的json文件,下面的代码正好可以做到这一点
相关问题 更多 >
编程相关推荐