【发布时间】:2012-10-11 06:14:22
【问题描述】:
我正在尝试创建一个将条目添加到 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 函数,使用不同的名称和 url,第一个会被覆盖。我需要做什么才能将第二个(第三个...)条目附加到第一个条目上?
编辑:这个问题的第一个答案和 cmets 指出了一个明显的事实,即我没有在写入块中使用 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)
【问题讨论】:
-
你甚至没有在第二个块中使用
feeds,所以你当然会丢失之前的输出。 -
哦,伙计。当然。我显然太累了:(
-
enter link description here 也许你可以看看这个问题。在列表中添加新数据更容易,而且不会破坏 JSON 格式。