从Python以编程方式创建和保存多个JSON文件

时间:2017-07-17 13:25:53

标签: python json

我有一个循环,我将生成的JSON对象添加到文件中,然后用逗号分隔每个对象(我使用open(" filename.txt"," w" )方法)。 您可以建议什么,而不是将JSON对象附加到* .txt文件,我可以创建多个JSON文件,因为每个循环? 在将来,我将需要使用存储在JSON中的数据进行一些计算,因此我正在寻找一种方法来创建一个组织良好的结构。 提前谢谢。

2 个答案:

答案 0 :(得分: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. 

但正如上面的评论中指出的那样,您可能需要重新考虑这是否是您想要关闭的路径。

答案 1 :(得分:0)

让我们考虑您的存储系统是否包含文件。

我只会在最后编写数据并构建数据列表。

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)

如果您想进行计算,每次都必须加载所有JSON文件。 然后,如果要更新文件,则需要加载所有内容,更新JSON数据,然后再次保存文件。

此解决方案成本高昂,这就是人们建议您使用MangoDB等数据库的原因。

但取决于你要做什么(学校项目?),文件存储就足够了。

下方的更新示例。

  using (StreamWriter sw = File.CreateText(@"..\..\myfile.txt"))
  {
       foreach (DataRow row in dt.Rows)
       {
           sw.WriteLine(row["QueueId"].ToString());
       }
  }