使用python将JSON对象写入文件

2024-04-29 10:11:08 发布

您现在位置:Python中文网/ 问答频道 /正文

所以我在python中有一个函数,它生成一个dict,如下所示:

player_data = {
   "player": "death-eater-01",
   "guild": "monster",
   "points": 50
}

我通过调用函数来获取这些数据。一旦我得到这些数据,我想把它写进一个文件,所以我调用:

^{pr2}$

这个很好用。但是,我的问题是,由于一个团队由多个球员组成,我再次调用函数来获取新的球员数据:

player_data = {
       "player": "moon-master",
       "guild": "mage",
       "points": 250
    }

现在,当我将这些数据写入同一个文件时,JSON会中断。。。如中所示,显示如下(两个节点之间缺少逗号):

{
       "player": "death-eater-01",
       "guild": "monster",
       "points": 50
    }
{
       "player": "moon-master",
       "guild": "mage",
       "points": 250
    }

我想要的是将这两个数据作为一个适当的JSON存储到文件中。由于各种原因,我无法预先准备完整的JSON对象,然后一次性保存。由于网络中断、性能和其他问题,我不得不逐步执行此操作。在

有人能指导我怎么做吗?我用的是Python。在


Tags: 文件数据masterjsondatapointsplayer调用函数
2条回答

要生成有效的JSON,您需要加载文件的先前内容,将新数据附加到该文件中,然后将其写回文件中。在

是这样的:

def append_player_data(player_data, file_name="team.json"):
    if os.path.exists(file_name):
        with open(file_name, 'r') as f:
            all_data = json.load(f)
    else:
        all_data = []
    all_data.append(player_data)
    with open(file_name, 'w') as f:
        json.dump(all_data, f)

不应将数据附加到现有文件中。相反,您应该首先用Python构建一个包含所有要编写的dict的列表,然后将其转储到JSON并将其写入文件。在

如果真的做不到这一点,可以选择加载现有文件,将其转换回Python,然后附加新的dict,转储到JSON,然后写回,替换整个文件。在

相关问题 更多 >