[英]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.