ConfigParser 不会保存对 .ini 文件中的值所做的更改

时间:2021-05-19 17:12:01

标签: python ini configparser

首先,如果我犯了一个明显的错误,请原谅我,我对这个非常陌生。

我为我和我的朋友制作了一个小游戏,我正在尝试使用 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 周的编码时间,所以任何帮助都将不胜感激。如果这是一个简单的问题,我在任何地方都找不到解决方案,再次道歉。

其他可能相关的信息:

  • 我正在为使用 discord.py 制作的不和谐机器人执行此操作
  • 我在 Pycharm 工作
  • 我用的是 mac

如果您需要任何其他信息,请告诉我。

谢谢!

1 个答案:

答案 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)

我可能仍然误解了一些东西,但我的代码可以工作,所以也许这可以为其他有类似问题的人解决这个问题! :)

相关问题