当前位置: 代码迷 >> python >> Python - 如何在每次循环后创建新的Json文件?
  详细解决方案

Python - 如何在每次循环后创建新的Json文件?

热度:81   发布时间:2023-07-16 10:08:04.0

所以我有一个CSV文件,我稍后将其转换为JSON文件。 但是我想要做的是我想为每个新的json对象保存到一个新的json文件。 意思是这样的:

{
"first_name": "Hello",
"last_name": "World",
"color": "black"
},

{
"first_name": "Stack",
"last_name": "Overflow",
"color": "Red"
}

我如何将其更改为从CSV到JSON的格式是我将其创建为dict,其中我具有CSV格式和基于“first_name”,“last_name_”和颜色创建的字段名称。

它看起来像是这样的:

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循环完成一个“行”以创建一个包含for-loop内部的新json文件(使用write)时,我怎么能这样做,然后每当有新的时候,它就会创建一个新的json文件。 基本上意味着每次完成一行,创建新的json?

您可以使用上下文管理器打开并写入每行的新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')

你可以试试这个:

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')

您只需要决定如何命名这些文件。 我的示例使用文件名中的第一个名称。

  相关解决方案