首页 > 解决方案 > 如何在一个json文件中写入前7个实体,在第二个文件中写入下7个实体,直到使用python结束

问题描述

我正在尝试以这种方式生成输出文件,前 7 个实体进入第一个 json 文件,接下来的 7 个实体进入第二个 json 文件,依此类推直到结束。

data_path = 'C:/Users/User/Desktop/Tables/'
for i, data_item in enumerate(data):
    with open(data_path + str(i) + '.json', 'w') as outfile:
        outfile.write(simplejson.dumps({'entities': [data]}, indent=4, ignore_nan=True))

我上面的脚本为 1 个 Json 文件生成 1 个实体,但每个输出 Json 文件我确实需要 7 个实体。

标签: pythonjsonpython-3.x

解决方案


每个 JSON 文件只能获得 1 个实体,因为一次只能迭代 1 个实体

for i, data_item in enumerate(data):

另外,根据问题中的代码,我假设您正在迭代目录中的文件(尽管按照书面说明,您只会迭代字符串中的字符,但我离题了)。

要获取您要查找的每个 JSON 的 7 个实体,您需要在每次迭代时创建该列表,或者以 7 个块迭代列表(我推荐这里chunks的方法)。

data_path = 'C:/Users/User/Desktop/Tables/'
# Assume data is a list of filenames in a directory

# In this case, data_item will be a list of *up to* 7 entities
for i, data_item in enumerate(chunks(data, 7)):
    with open(f'{data_path}{i}.json', 'w') as outfile:
        outfile.write(simplejson.dumps({'entities': data_item}, indent=4, ignore_nan=True))

推荐阅读