我想添加每一个新的json数据,我从这个API,但它更新的文件,而不是追加它怎么办

yuvru6vn  于 2023-08-08  发布在  其他
关注(0)|答案(1)|浏览(98)

我想添加每一个新的json数据,我从这个API,但它更新的文件,而不是追加它怎么办
第一个月

import requests
import json

r=requests.get(url="http://api.open-notify.org/iss-now.json")
a=r.json()

latitude=a["iss_position"]["latitude"]
longitude=a["iss_position"]["longitude"]
timestamp=a["timestamp"]

new_data={
    "timestamp": timestamp,
    "message": "success",
    "iss_position": {
        "latitude": latitude,
        "longitude": longitude
    }
}

with open("./35/test.json",mode="r") as data_file:
    load=json.load(data_file)
    load.update(new_data)
with open("./35/test.json",mode="w") as data_file:  
    json.dump(load,data_file,indent=4)

字符串
Output
我希望这段代码能做到这一点

{
    "timestamp": 1690471995,
    "message": "success",
    "iss_position": {
        "latitude": "-40.3966",
        "longitude": "172.0519"
    }

"timestamp": 1690472149,
    "message": "success",
    "iss_position": {
        "latitude": "-45.6057",
        "longitude": "-176.9845"
    }
}


我的test.json文件,但它并没有追加,而是继续更新旧文件

oiopk7p5

oiopk7p51#

因为你写的是相同的key; dict ionaries不允许多个相同的key
一种解决方法是让每个数据条目都关联唯一的key,例如timestamp

new_data = {
    'timestamp_ ' + str(timestamp): {
        "timestamp": timestamp,
        "message": "success",
        "iss_position": {
            "latitude": latitude,
            "longitude": longitude
        }
    }
}

字符串
这只需要另一个层次的嵌套;每个数据条目现在与特定的timestamp相关联。

相关问题