2017-07-17 52 views
0

保存多個JSON文件,我有一個循環,我添加了一個生成的JSON對象到一個文件,然後我每逗號分隔的對象(我使用open(「FILENAME.TXT」,「W」)方法)。 你可以建議如此,而不是將JSON對象附加到* .txt文件中我可以像每個循環一樣創建多個JSON文件?未來,我將需要使用存儲在JSON中的數據進行一些計算,所以我正在尋找一種方法來創建一個組織良好的結構。 在此先感謝。編程方式創建和在Python

+1

爲什麼不從您那裏提取數據JSON obj並將其存儲在數據庫中? –

+0

首先,我需要創建這些數據 - 這就是爲什麼我正在尋找一種方法來創建JSON文件。現在,它看起來像這樣:(generate_data,10) - 作爲輸出,我有一個txt文件中的10個json對象。如果我可以從這個文件中提取數據,並且可以告訴我如何做到這一點,我會很感激。 –

+0

這是所有標準的python循環和控制結構。互聯網上有很多關於如何在Python中完成這些工作的資源[例如](http://www.oreilly.com/programming/free/files/a-whirlwind-tour-of-python.pdf) –

回答

1

如果你真的想輸出的文件,你可以把它們扔掉分別使用Python的json模塊(docs)像這樣:

import json 
json.dump(json_object, filename) 

這會給你帶來很多你需要的文件如果需要,請使用json.load()重新閱讀。

您也可以幾個JSON對象保存到一個文本文件,然後在它們之間迭代,閱讀使用json.loads各個項目;注意末尾的s,這意味着它會轉換您輸入的任何字符串,例如文件中的一行。

for line in f: 
    input_json = json.loads(line) 
    #you'll want to store this somewhere, e.g. in a dictionary. 

但正如上面的評論中指出的那樣,您可能需要重新考慮這是否是您想要關閉的路徑。

0

讓我們考慮一下你的存儲系統是否帶有文件。

我只會在最後寫入數據,構建數據的列表。

import json 
results = [] 
# Your loop 
foreach element in elements: 
    element_json_object = ... # Construct a JSON object here 
    results.append(element_json_object) 

data = { 
    "results": results 
} 

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

每次,如果你想計算,你將不得不加載所有的JSON文件。 然後,如果你想更新你的文件,你將需要加載一切,更新你的JSON數據,然後再次保存你的文件。

這種解決方案是昂貴的,這就是爲什麼人們建議您使用的數據庫就像MangoDB。

而是取決於你必須做什麼(學校的項目?),文件存儲可以是不夠的。

下面是更新示例。

results = [] 
with open('data.json') as data_file:  
    data = json.load(data_file) 
    results = data["results"] 
    # You can update your data here 
    for result in results: 
     if result["id_test"] == 15: 
      result["data_test"] = "DATA UPDATED" 
data = { 
    "results": results 
} 

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