2017-07-17 36 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)