大家好日子。仍然与python dict战斗。而且,正如我所想,我的最后一个问题。首先,我用第一个数据创建我的字典结构:
for i, (x, y, w, h) in enumerate(faces):
face = dict()
face["face_{}".format(i)] = {"face_rect": str((x, y, w, h)), "Age": "howold", "Gender": "who"}
with open('face.json', 'a') as fp:
data_to_write = json.dumps(face)
fp.write(data_to_write + '\n')
在这部分代码之后,我的face.json看起来像:
在另一个py文件中我有另一个进程,应该添加Gender“who”。而且,在第3个py文件应该和Age“howold”。我试着写第二个文件:
face = dict()
face["Gender"] = Guess
with open('face.json', 'a') as fp:
data_to_write = json.dumps(face)
fp.write(data_to_write + '\n')
很多种类,但对我不起作用。它重写了我所有的face.json文件,或者只是用另一个结构写新行。 谢谢你的帮助!
UPDATE ------------------------------ 代码的第一部分用于我拥有的每张图片,它是面部检测。它是在字典中写入坐标或矩形,同时我创建的是什么。你可以看到结构。让我展示第二个文件的完整def,我需要从中获取下一个数据:
def classify(sess, label_list, softmax_output, coder, images, image_file):
print('Running file %s' % image_file)
image_batch = make_batch(image_file, coder, not FLAGS.single_look)
batch_results = sess.run(softmax_output, feed_dict={images:image_batch.eval()})
output = batch_results[0]
batch_sz = batch_results.shape[0]
for i in range(1, batch_sz):
output = output + batch_results[i]
output /= batch_sz
best = np.argmax(output)
best_choice = (label_list[best], output[best])
Guess = 'Guess @ 1 %s, prob = %.2f' % best_choice
print('Guess @ 1 %s, prob = %.2f' % best_choice)
face = dict()
face["Gender"] = Guess
with open('face.json', 'a') as fp:
data_to_write = json.dumps(face)
fp.write(data_to_write + '\n')
从这里,正如你所看到的,我需要抓取猜测数据,直到已经创建的字典。这两个文件之间的关系 - 第一次面部检测,创建字典和图像上的裁剪面部。在它之后我们将不再使用探测器,但我们有rect。坐标,我想在json文件中看到的内容。在它之后,第二个文件的代码(分类),给我关于年龄或性别的结果(预测)。它是文本格式。所以,我想拥有它 - 所有数据的json文件:face_rect,Age,Gender。如何更新?
if label_list == ['M', 'F']:
face = dict()
face["face_{}".format(n)] = {"Gender": Guess}
with open('face.json', 'a') as fp:
data_to_write = json.dumps(face)
fp.write(data_to_write + '\n')