簡體   English   中英

使用python將數據追加到JSON文件

[英]Appending data to JSON file with python

我已經編寫了以下python代碼來填充JSON文件。

import json

data = {}  
data['people'] = []

for i in range(0,3):
    data['people'].append({
    'name': 'C%d'%(i),
    'div':i,
    'from': 'City%d'%(i)
})

with open('data.txt', 'w') as outfile:  
    json.dump(data, outfile)

但是,我的JSON文件如下所示:

{"people": [{"div":0,"from":,"City0":"name":"C0"},{"div":0,"from":,"City0":"name":"C0"}]}

我的輸入順序與輸出的順序不同。 原因是什么,我該如何糾正?

您之類的輸出的原因是因為json文件並不真正在乎它們的順序,它們保存數據並與文件目錄進行比較。 只要您可以訪問該文件,並且實際上是該文件,那么一切都很好。 您或多或少希望它是您完全按照json.dumps不可能輸入的方式,如果您絕對需要那樣,那么Id只需像
string='''{"people": [{#arange in order you want it}]}'''
並保存它,就像保存其他文件一樣。

如果你希望你的排序JSON,嘗試一些我發現這里排序的Json

您使用什么python版本? 您創建了一個dict,但是在python 3.6之前,插入順序不被保留。 在python 3.6中 ,插入順序得以保留,但它被視為實現細節,因此不應依賴。 在python 3.7中 ,已將dict對象的插入順序保留特性聲明為Python語言規范的正式組成部分。 如果您使用的Python版本低於3.7,請使用collections中的OrderedDict。

import json
from collections import OrderedDict

data = {}
data['people'] = []
for i in range(0,3):
    data['people'].append(OrderedDict((
    ('name', 'C%d' %(i)),
    ('div', i),
    ('from', 'City%d'%(i))
    )))

with open('data.json', 'w') as outfile:  
    json.dump(data, outfile)

順便說一句,為什么文件的擴展名是txt而不是json? 沒關系,並且與您的問題無關,但我很好奇。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM