1
我已經從數據流中構建了一個json對象,其中每個用戶都有一個json對象。Python:將多個json對象寫入文件;稍後通過json.load打開並加載
{
"entities": {
"description": {
"urls": []
}
},
"utc_offset": -10800,
"id"
"name": "Tom",
"hit_count": 7931,
"private": false,
"active_last_month": false,
"location": "",
"contacted": false,
"lang": "en",
}
目的:我想構建一個JSON文件,其中每個JSON對象成爲與縮進一個文件中的行。而當談到讀回JSON文件,它可以打開使用閱讀:
例如:
with open(pathToFile) as json_file:
json_data = json.load(json_file)
for key in json_data:
print key["id"]
但在:以下文件
[
{
"entities": {
"description": {
"urls": []
}
},
"utc_offset": -10800,
"id"
"name": "Tom",
"hit_count": 7931,
"private": false,
"active_last_month": false,
"location": "",
"contacted": false,
"lang": "en",
}
,
{
"entities": {
"description": {
"urls": []
}
},
"utc_offset": -10500,
"id"
"name": "Mary",
"hit_count": 554,
"private": false,
"active_last_month": false,
"location": "",
"contacted": false,
"lang": "en",
}
]
上面的文件可以輕鬆地閱讀這裏的一刻是我如何寫構建JSON文件:
with open(root + filename + '.txt', 'w+') as json_file:
# convert from Python dict-like structure to JSON format
jsoned_data = json.dumps(data)
json_file.write(jsoned_data)
json_file.write('\n')
這給我
{
indented json data
}
{
indented json data
}
PS:通知括號[]
不存在與,
沿着當您嘗試讀取相同的代碼結構
with open(pathToFile) as json_file:
json_data = json.load(json_file)
for key in json_data:
print key["id"]
你最終得到的錯誤: ValueError: Extra data: line 101 column 1 - line 1889 column 1
不可能。您不能盲目追加到JSON文件而不打破它。 JSON是一個序列化的數據結構,它不是純文本。如果你想修改它,你將不得不讀取文件/解析/修改/序列化/寫入文件,其他的一切將是一個醜陋的破解,在某些時候肯定會破壞。您可能需要查看面向文檔的數據庫(類似CouchDB)以進行此類CRUD工作。 – Tomalak
帶括號和','的例子是從網上下載的文件。我知道我在問你猜。你認爲它來自CouchDB還是MongoDB轉儲? –
它來自哪裏並不重要。 JSON文件是原子的,你只能將它們作爲一個整體處理,或者根本不處理。如果你想分別處理它們中的各個位,請使用已完成此任務的工具。或者使用許多小文件。 – Tomalak