Python-如何在每次循环后创建新的Json文件?
因此,我有一个CSV文件,稍后我将其转换为JSON文件。然而,我想做的是,我想为每个新的json对象保存到一个新的json文件中。意思是这样的:Python-如何在每次循环后创建新的Json文件?,python,json,Python,Json,因此,我有一个CSV文件,稍后我将其转换为JSON文件。然而,我想做的是,我想为每个新的json对象保存到一个新的json文件中。意思是这样的: { "first_name": "Hello", "last_name": "World", "color": "black" }, { "first_name": "Stack", "last_name": "Overflow", "color": "Red" } 如何将其从CSV格式更改为JSON格式,是因为我将其创建为dict格式,其中包含C
{
"first_name": "Hello",
"last_name": "World",
"color": "black"
},
{
"first_name": "Stack",
"last_name": "Overflow",
"color": "Red"
}
如何将其从CSV格式更改为JSON格式,是因为我将其创建为dict格式,其中包含CSV格式和基于“名字”、“姓氏”和颜色创建的字段名称
它看起来像是:
jsonfile = open('newfilejson.json', 'w')
fieldnames = ("first_name","last_name","color")
reader = csv.DictReader(csvfile, fieldnames)
for row in reader:
jsonfile.write('"first_name": "' + row['first_name'] + '",\n')
jsonfile.write('"last_name": "' + row['last_name'] + '",\n')
jsonfile.write('"color": "' + row['color'] + '",\n')
但是,这基本上只会保存到一个文件中,我的问题是:
我怎么能让它每次从for循环中完成一行来创建一个新的json文件,其中包含for循环中的内容(使用write),然后每当有新内容时,它就会创建一个新的json文件。基本上意味着每次完成一行时,都要创建新的json?您可以尝试以下方法:
for row in reader:
filename = 'a_file_{}'.format(row['first_name'])
with open(filename, 'w') as f:
f.write('"first_name": "' + row['first_name'] + '",\n')
f.write('"last_name": "' + row['last_name'] + '",\n')
f.write('"color": "' + row['color'] + '",\n')
您只需要决定这些文件的命名方式。我的示例使用文件名中的第一个名称。您可以使用上下文管理器打开并写入每行的新json文件:
fieldnames = ("first_name","last_name","color")
reader = csv.DictReader(csvfile, fieldnames)
for row in reader:
with open('%s_%s.json' % (row['first_name'], row['last_name']), 'w') as jsonfile:
jsonfile.write('"first_name": "' + row['first_name'] + '",\n')
jsonfile.write('"last_name": "' + row['last_name'] + '",\n')
jsonfile.write('"color": "' + row['color'] + '",\n')
对于大多数代码(除了打开CSV文件的两行代码外),在每次迭代中打开、写入和关闭一个新的JSON文件时,使用一个附加的
。@MichaelButscher但是我需要先创建JSON文件才能写入吗?是的,您必须先创建(并打开,这与此处的操作相同)在写入之前先创建一个文件。是否要打开一个json并为每个csv行创建另一个json文件?或者打开json并将csv行保存在json中?你的解释和代码有点矛盾,我很困惑。你真的想写无数个单独的JSON文件吗?为什么一个JSON文件不包含这些dict对象的列表呢?我使用了它,它帮助我实现了我想要的目标!非常感谢!:)