【问题标题】:ConfigParser won't save changes made to values in .ini fileConfigParser 不会保存对 .ini 文件中的值所做的更改
【发布时间】:2021-08-08 23:16:15
【问题描述】:

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

我为我和我的朋友们制作了一个小游戏,我正在尝试使用 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')

到目前为止,当我打印出这些值时,它似乎工作正常。但是,如果我打开记分牌文件,它仍然具有原始值。

另外值得一提的是,我将文件重命名为同一件事,因为这是我在其他地方看到的一种潜在解决方案,但它没有奏效。以前我只是在那个时候关闭文件。

我还尝试了两个文件,我打开并从中读取值的记分板,然后写入一个名为 scoreboardA 的新文件,我将更新的分数值写入其中。然后将 scoreboardA 重命名为 scoreboard 并将 scoreboard 重命名为其他内容。我在网上看到的另一种可能的解决方案不起作用,老实说只是让我感到困惑。

我真的对这个大声笑束手无策,我只有大约 3 周的编码时间,所以非常感谢任何帮助。如果这是一个简单的问题,我无法在任何地方找到解决方案,再次道歉。

其他可能相关的信息:

  • 我正在为我正在使用 discord.py 制作不和谐的机器人这样做
  • 我在 Pycharm 工作
  • 我在 Mac 上

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

谢谢!

【问题讨论】:

    标签: python ini configparser


    【解决方案1】:

    终于意识到我做错了什么。看来我误解了 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)
    

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

    【讨论】:

      猜你喜欢
      • 2015-03-13
      • 2020-10-29
      • 1970-01-01
      • 1970-01-01
      • 2020-03-15
      • 2014-08-05
      • 1970-01-01
      • 2023-01-19
      • 1970-01-01
      相关资源
      最近更新 更多