试图添加一个保存系统,但我无法将文件更改为python上的变量

试图添加一个保存系统,但我无法将文件更改为python上的变量,python,Python,老实说,我不知道我在做什么,如果有人能帮上忙的话,我会非常感激的 我正在尝试制作一个保存游戏,这样你就可以保存一个文件,然后使用load和itll读取文件并恢复进度,但它不起作用 bag=[""] gold=0 weapon=["cool looking stick,1"] level=1 savefile=input("what is you name") load=input("would you like to load

老实说,我不知道我在做什么,如果有人能帮上忙的话,我会非常感激的 我正在尝试制作一个保存游戏,这样你就可以保存一个文件,然后使用load和itll读取文件并恢复进度,但它不起作用

bag=[""]
gold=0
weapon=["cool looking stick,1"]
level=1
savefile=input("what is you name")
load=input("would you like to load a previous save")
if load == "yes":
    f = open(savefile+"'s save.bag.txt", "r")
    str(bag) == (f.read())
    f.close()
    f = open(savefile+"'s save.gold.txt", "r")
    str(gold) == (f.read())
    f.close()
    f = open(savefile+"'s save.level.txt", "r")
    level == (f.read())
    f.close()
    f = open(savefile+"'s save.weapon.txt", "r")
    str(weapon) == (f.read())
    f.close()
else:
    f = open(savefile+"'s save.bag.txt", "w")
    f.write(str(bag))

etc

除了使用相等比较运算符
==
而不是赋值运算符
=
来读取内容之外,您的代码将因字符串以外的任何内容而失败(因为对于文本文件,这是从
f.read()
获得的)

一般来说,要保存结构化数据,我建议使用JSON,但要保存任意类,JSON是非常理想和简单的

我对这里的内容进行了重构,将所有玩家状态保存在一个类中:

  • Player.load()
    classmethod从文件加载对象。(不过,它并不能真正验证是否加载了播放器。可以是任何对象。)
  • Player.save()
    instance方法将对象保存到适当命名的文件中

谢谢现在我只需要看一个关于泡菜的旅游节目,我应该很好
import pickle


class Player:
    def __init__(self, name):
        self.name = name
        self.bag = []
        self.gold = 0
        self.weapon = ["cool looking stick,1"]
        self.level = 1

    def save(self):
        with open(self.name + ".save", "wb") as f:
            pickle.dump(self, f)

    @classmethod
    def load(cls, name):
        with open(name + ".save", "rb") as f:
            return pickle.load(f)


name = input("what is your name?")

if input("would you like to load a previous save? [y/n]").lower().startswith("y"):
    player = Player.load(name)
else:
    player = Player(name)
    player.save()

# e.g.:
player.level += 1
player.save()