首先,写入json可以利用 json.dump(data, json) 函数。其中json为你需要写入的json文件,data是你要写入的数据。
我需要写入的格式如下图:
如果是直接写入,那么data可以写成:data = [{ '1': 'person','2': 'bicycle',... }]。然后直接利用json.dump(data, json)写入即可以。
但是当类别标签很多的时候,这么写就麻烦了些,于是我利用循环遍历,读取标签和对应索引,构建字典,然后加上[ ]使其符合data所需格式,再利用json.dump写入即可。
import json
txt_path = "F:/labels.txt"
labels = []
with open(txt_path, "r") as w:
lines = w.readlines()
for line in lines[2:]:
line = line.replace("\n", "")
labels.append(line)
print(labels)
json_path = 'pascal_voc_indices.json'
data = {}
for i in range(len(labels)):
data['{}'.format(i)] = '{}'.format(labels[i])
print(data)
# json_get = [data]
# print(json_get)
with open(json_path, 'w') as f:
for i in range(len(labels)):
data['{}'.format(i)] = '{}'.format(labels[i])
# json_get = [data]
# json.dump(json_get, f, indent=2)
json.dump(data, f, indent=2)
尝试不构建字典,直接循环写入,结果如下(明显不行):
声明:本文主要为自己记录解决办法,如有更好的解决方案,欢迎大佬提供在评论区。