【问题标题】:append line to file and overwrite - python将行附加到文件并覆盖 - python
【发布时间】:2020-04-28 16:15:38
【问题描述】:

如何在json 文件中追加一行并用相同的名称覆盖它?

data.json    
{
 'a': 1,
 'b': 2}

我试过了

with open('data.json', 'r+') as json_file:
    data = json.load(json_file)
    data.update({'c': 3})
    json.dump(data,json_file)

但这会附加所有数据,而不仅仅是预期的行

【问题讨论】:

    标签: python json append


    【解决方案1】:

    首先,您需要读取 JSON 文件并在 json.load() 方法中传递第二个参数,即保留字典的顺序。所以在给字典分配键值对时,OrderedDict 会自动将其追加到末尾。最后,写入文件。

    import json
    from collections import OrderedDict
    
    with open('data.json', 'r') as json_file:
        data = json.load(json_file, object_pairs_hook=OrderedDict)
        data['c'] = 3
    
    with open('data.json', 'w') as json_file:
        json.dump(data, json_file)
    

    【讨论】:

    • 抱歉,请参阅我的编辑。您对r+ 的建议是正确的,而不是我对w 的建议;前者既写又读。
    • 我认为dict 没有append 方法,因为当我使用data.append({'c': 3}) 行运行代码时,它给了我AttributeError: 'dict' object has no attribute 'append'
    猜你喜欢
    • 2016-04-04
    • 1970-01-01
    • 1970-01-01
    • 2015-05-25
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    • 2016-06-04
    • 2019-06-02
    相关资源
    最近更新 更多