在Python中将JSON数据从一个文件追加到另一个文件

时间:2014-12-11 19:42:06

标签: python json

考虑这段代码,这是可以理解的失败:

def testDataTransform():
    source = 'data/threads/testFile2.json' 
    newFile = 'data/threads/testFile1.json'

    jX = returnJson(source)
    jY = returnJson(newFile)

    for dataL1 in jX:
        #print dataL1['city']
        for dataL2 in jY:
            if dataL1['city'] == dataL2['city']:
                dataL2.append(dataL1['population']) 

    print dataL2


# end testDataTransform

def returnJson(source):
    #Grab destination file json
    try:
       with open(source) as jsonFile: # Open and verify file is there
        # load JSON object into memory
        j = json.load(jsonFile)

        return j
    except Exception, e:
        print e
        raise
# end returnJson

testDataTransform()

生成的错误是:AttributeError: 'dict' object has no attribute 'append', 我现在理解的是由于尝试在文件上使用append并因此错误地附加了我的JSON。问题是我该如何正确地做到这一点?我想添加人口数据,该数据位于source文件中。

testFiles中的JSON结构如下所示:

[

    {
        "city": "New York",
        "lat": 20.1234,
        "long": 32.09876
    },
    {
        "city": "London",
        "lat": 21.1234,
        "long": 37.09876
    },
    {
        "city": "New Jersey",
        "lat": 10.1234,
        "long": 30.09876
    }

]

一个有“人口”节点,另一个没有。我想将该人口数据从一个文件复制到另一个文件。怎么做的?我想知道将文件流转换为数组会有所帮助,但我怎么做呢?

感谢。

1 个答案:

答案 0 :(得分:1)

错误消息告诉您究竟出了什么问题。它在这一行

dataL2.append(dataL1['population']) 

dataL2是一个dict(),而dict()没有一个名为append的方法

你想要的是

dataL2["population"] = dataL1['population']

基本上,对此文件的json.load()调用会返回dicts()列表。 JSON数组映射到Python列表,JSON对象映射到Python字典。要向dict添加新密钥,只需在其上设置一个值即可。