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