首页 > 解决方案 > 附加到python中的json文件

问题描述

我正在尝试将元素附加到 json 文件

import json
person = {
    "fname": "Chris",
    "lname": "Morten",
    "age": "25"
    }
with open("guest.json", "a") as file:
    json.dump(person, file, indent=3, ensure_ascii=False)

我只想添加一次人物变量

**和用户在同一个文件中的输入**

f_name = input("What is your name? ")
l_name = input("What is your last name? ")
age = input("How old are you? ")
x = []
x.append({
    "fname": f_name,
    "lname": l_name,
    "age": age
})

with open("guest.json", "a") as file:
    json.dump(x, file, indent=3)

每次我再次运行程序人字典变量时,结果将是这样的:

{
   "fname": "Chris",
   "lname": "Morten",
   "age": "25"
}[
   {
      "fname": "nour",
      "lname": "ash",
      "age": "20"
   }
]{
   "fname": "Chris",
   "lname": "Morten",
   "age": "25"
}[
   {
      "fname": "nori",
      "lname": "sori",
      "age": "33"
   }
] 

有人能帮我吗?

标签: pythonjson

解决方案


第 1 步是读取旧的 json 文件。如果文件不存在,请记住创建一个空列表。

if <file exists>:
    with open("guest.json", "r") as jsonfile:
        guests = json.load(jsonfile)
else:
    guests = [] # no guests. make an empty list

然后,将新客人添加到您已阅读的内容中。

f_name = input("What is your name? ")
l_name = input("What is your last name? ")
age = input("How old are you? ")

guests.append({
    "fname": f_name,
    "lname": l_name,
    "age": age
})

最后,将整个列表写入文件。不要附加-json.dump会将整个序列化列表转储到文件中,包括您的旧客人。

with open("guest.json", "w") as jsonfile:
        guests = json.dump(guests, jsonfile)

推荐阅读