将字典导出到 json 文件



我有一个j字典列表,我想将一些字典导出为名为myFile.json的json文件:

for item in j:
    if item['start'] = "True":
        #If myFile.json exists then append item to myFile.json
        #Otherwise create myFile.json that starts with "[" and append item to it
#Append "]" to the myFile.json

我可以使用try来做到这一点,但我想知道是否有更pythonic的方法来制作它。

我的代码甚至不值得放它。

try:
    with io.open(myFile.json, 'a', encoding='utf-8') as f:
        f.write(unicode(json.dumps(item, ensure_ascii=False)))
        f.write(u",")
except IOError:
    with io.open(myFile.json, 'w', encoding='utf-8') as f:
        f.write(u"[")
    with io.open(myFile.json, 'a', encoding='utf-8') as f:
        f.write(unicode(json.dumps(item, ensure_ascii=False)))
        f.write(u",")
        # ..etc

编辑输出文件应为 json 数组:

[ {"key1":"value1","key2":"value2"},{"key1":"value3","key2":"value4"}]

你的方法有一个严重的缺陷:如果你先写[,你还需要在你写的每个JSON值后添加,逗号,你必须附加结束],然后你必须每次附加到文件时删除最后一个],或者在阅读时手动添加]在解码前添加右括号。

您最好不要尝试构建一个大的 JSON 列表,而是使用换行符作为分隔符。这样,您可以自由追加,并且通过逐行读取文件,您可以轻松地再次加载数据。

这具有大大简化代码的额外优势:

with io.open(myFile.json, 'a', encoding='utf-8') as f:
    f.write(unicode(json.dumps(item, ensure_ascii=False)))
    f.write(u'n')

这样就无需先测试现有文件。阅读就像:

with open(myFile.json) as f:
    for line in f:
        data = json.loads(line)

相关内容

  • 没有找到相关文章

最新更新