当前位置: 首页 > 面试题库 >

如何将数据附加到json文件?

柴意智
2023-03-14
问题内容

我正在尝试创建一个将条目添加到json文件的函数。最终,我想要一个看起来像

[{"name" = "name1", "url" = "url1"}, {"name" = "name2", "url" = "url2"}]

等。这就是我所拥有的:

def add(args):
    with open(DATA_FILENAME, mode='r', encoding='utf-8') as feedsjson:
        feeds = json.load(feedsjson)
    with open(DATA_FILENAME, mode='w', encoding='utf-8') as feedsjson:
        entry = {}
        entry['name'] = args.name
        entry['url'] = args.url
        json.dump(entry, feedsjson)

这确实会创建一个条目,例如{"name"="some name", "url"="some url"}。但是,如果我add再次使用此函数(使用不同的名称和网址),第一个函数将被覆盖。我需要怎么做才能将第二个(第三个…)条目附加到第一个?

编辑 :对此问题的第一个答案和评论已经指出了我feeds在写块中未使用的明显事实。不过,我看不出该怎么做。例如,以下内容显然不会起作用:

with open(DATA_FILENAME, mode='a+', encoding='utf-8') as feedsjson:
    feeds = json.load(feedsjson)
    entry = {}
    entry['name'] = args.name
    entry['url'] = args.url
    json.dump(entry, feeds)

问题答案:

json可能不是磁盘格式的最佳选择。附加数据带来的麻烦就是一个很好的例子。具体来说,json对象具有一种语法,这意味着必须阅读并解析整个对象才能理解其中的任何部分。

幸运的是,还有很多其他选择。CSV特别简单。python的标准库很好地支持了这一点。最大的缺点是,它仅适用于文本。如果需要,程序员需要采取其他措施才能将值转换为数字或其他格式。

没有此限制的另一个选项是使用sqlite数据库,该数据库在python中也具有内置支持。这可能与您已经拥有的代码有更大的不同,但是它自然而然地支持您显然试图构建的“稍微修改”模型。



 类似资料:
  • 问题内容: 我有这个.json文件: 这是我的PHP代码: 问题是,我不确定如何实现它。每次提交表单时,我都会在上面调用此代码,因此我需要ID递增,并且还要使用和保持有效的JSON结构,这可能吗? 问题答案:

  • 问题内容: 我将如何继续追加数据?我有这个: 我想向它添加另一个对象,例如: 这是我使用的代码: 我真的不知道如何继续添加它,但是也许其他人知道吗? 问题答案: 您将无法使用文件追加操作来执行此操作。文件追加操作只能在末尾添加文本,而不能在中间插入文本。这使得不可能使用file-append来保持JSON有效。 我可以想到两种选择: 将整个文件读入一个对象,添加您的对象,然后重写整个文件(性能不佳

  • 这比我找到的或者我自己能想到的其他答案要具体一点。 我的json文件完全包含 不多也不少。使用这种格式的json数据,我可以得到所需的确切结果。 我想做的是能够使用PHP向json文件追加更多内容。我见过: 我的问题是,我不明白如何在我的示例中使用这个示例,因为我的json数据没有为其单个数组使用键。我是否必须放弃并找到一种使用命名键来获得我想要的结果的方法,或者有没有一种方法可以让我的json数

  • 问题内容: 在Linux中将文本附加到文件的最简单方法是什么? 我看了这个问题,但是可接受的答案使用了一个附加程序(),我相信应该有一个更简单的方法或类似方法。 问题答案: cat >> filename This is text, perhaps pasted in from some other source. Or else entered at the keyboard, doesn’t

  • 这是我的app.js 输入的数据用于分析图表,其中数据集必须在“标签”旁边显示一周中的每一天。我是AngularJS、ChartJS和JSON的新手,请建议 以下是请求数据的工作Plunkrhttp://plnkr.co/edit/Pfxc4JrKhv9SNlRUWqHi?p=preview

  • 问题内容: 我该怎么做才能将其附加到文件中而不是覆盖? 问题答案: 使用附加: