2015-08-27 54 views
2

使用Python,我節省JSON文件到單獨的線路是這樣的:模式保存換行分隔的JSON又名linejson又名jsonlines與蟒蛇

from bson import json_util # pymongo 

with open('test.json', 'ab') as f: 
    for document in documents: 
     f.write(json_util.dumps(document)+'\n') 

,然後閱讀這樣的:

with open('test.json') as f: 
    for line in f: 
     document = json_util.loads(line) 

簡單和簡單讓我覺得必須有一個陷阱?這一切都是爲了linejson,又名jsonlines

+1

您是否遇到實際問題? JSON是否可以包含換行符? –

+0

我正在努力解決潛在的問題。我用包含換行符的json測試了它,它似乎工作正常。但我不想從現在起一個月醒來,突然說:'哦,不'。 – bahmait

回答

3

是的,這就是它的全部。

+0

長時間運行:如果在寫入過程中被中斷,然後重新啓動,則文件將被損壞。是否有每個開放驗證模式(因爲我正在追加)? – bahmait

+1

不一定,但肯定會發生。你可以通過不同的方式來處理這個問題。最好取決於你的使用細節。你可以做的一件事是確保讀者代碼忽略無效的行。您也可以打開文件讀/寫並檢查最後一行,然後繼續追加數據。 – Cyphase

+0

謝謝。因此:對於我的類似日誌文件的情況:打開讀/寫 - 檢查最終的換行符 - 如果不存在,則添加 - 然後進行第一次新寫入。然後在讀取代碼中使用'try/except'來捕獲無效文檔。這種組合會將損壞限制在中斷的文件上。這聽起來是對的嗎? – bahmait

相關問題