首先,如果我犯了一个明显的错误,请原谅我,我对这个非常陌生。
我为我和我的朋友制作了一个小游戏,我正在尝试使用 Configparser 保留记分牌。目前,我认为我正在做的是当有人正确回答问题时,我读取名为 scoreboard.ini 的文件,将那个人的分数加 1,然后重写该文件。我的问题是对文件的更改不保存。当我运行它并稍后调用分数时,它会为我提供原始的未编辑版本,并且打开文件本身也表明没有任何变化。
with open(r'/filepath/scoreboard.ini','r+') as files:
config.read((r'/filepath/scoreboard.ini'))
print(config.getint('scores','playerA')) ### returns 0 which is correct
PlayerA_Score = config.getint('scores','PlayerA_Score') + 1
print(PlayerA_Score) ### returns 1 - working correctly
with open(r'/filepath/scoreboard.ini','w+') as files:
config.write(files)
config.set('scores', 'playerA', PlayerA_Score)
print(config.getint('scores', 'playerA')) ### also returns 1 - still working up to here
os.rename('scoreboard.ini','scoreboard.ini')
到目前为止,当我打印出这些值时,它似乎工作正常。然而,如果我打开记分板文件,它仍然具有原始值。
另外值得一提的是,我将文件重命名为同样的原因,这是我在其他地方看到的一个潜在解决方案,但它没有奏效。以前我只是在那个时候关闭文件。
我也试过有两个文件,scoreboard,我打开它并从中读取值,然后编写一个名为 scoreboardA 的新文件,我将更新的分数值写入其中。然后将 scoreboardA 重命名为 scoreboard 并将 scoreboard 重命名为其他名称。我在网上看到的另一个可能的解决方案不起作用,老实说只是让我感到困惑。
我真的对这个哈哈大笑了,只有大约 3 周的编码时间,所以任何帮助都将不胜感激。如果这是一个简单的问题,我在任何地方都找不到解决方案,再次道歉。
其他可能相关的信息:
如果您需要任何其他信息,请告诉我。
谢谢!
答案 0 :(得分:0)
终于意识到自己做错了什么。看来我误解了 config.write() 的作用,哈哈。我需要打开文件,使用 set 更改值,然后使用 write() 将其保存到我的文件中。我修改后的代码是。
with open(r'/filepath/scoreboard.ini','r+') as files:
config.read((r'/filepath/scoreboard.ini'))
print(config.getint('scores','playerA'))
PlayerA_Score = config.getint('scores','PlayerA_Score') + 1
print(PlayerA_Score)
config.set('scores', 'playerA', PlayerA_Score)
print(config.getint('scores', 'playerA'))
with open(r'/filepath/scoreboard.ini','w+') as files:
config.write(files)
我可能仍然误解了一些东西,但我的代码可以工作,所以也许这可以为其他有类似问题的人解决这个问题! :)