Mientras intenta agregar el dictado de Python a JSON, solo escribe una vez

Estoy trabajando en un proyecto de reconocimiento facial y quiero escribir registros de caras detectadas en un archivo JSON. Estoy usando el siguiente código.

import os import json from datetime import datetime,date now = datetime.strftime(datetime.now(), '%Y%m%d') now_str = str(now) def write_logs(time,date,name,accuracy,direction): a = [] entry = {'time':time,'name':name,'accuracy':accuracy,'direction':direction} if not os.path.isfile('./log'+now_str+'.json'): a.append(entry) with open('./log'+now_str+'.json', mode='a+') as f: json.dump(a,f, indent=3) return a 

La salida es:

 [ { "time": "13/06/2018 - 20:39:07", "name": "Rajkiran", "accuracy": "97.22941", "direction": "default" } ] 

Sin embargo, lo que esperaba era:

 [ { "time": "13/06/2018 - 20:39:07", "name": "Rajkiran", "accuracy": "97.22941", "direction": "default" }, { "time": "13/06/2018 - 20:39:07", "name": "Rajkiran", "accuracy": "97.22941", "direction": "default" }, { "time": "13/06/2018 - 20:39:07", "name": "Rajkiran", "accuracy": "97.22941", "direction": "default" } ] 

Las matrices JSON deben agregarse continuamente, hasta el momento en que mi algoritmo reconozca caras para el día. Sin embargo, como se mencionó anteriormente, se escribe una sola vez.

@RAJKIRAN VELDUR: El problema es tu statement if. De acuerdo con su código, una vez que el archivo existe, no puede adjuntarlo. Creo que solo necesita eliminar not de su sentencia if, o eliminar la sentencia if por completo. Basado en lo que estás tratando de lograr, en realidad no lo necesitas.

EDITAR: El módulo json no le permite adjuntar a un archivo de la forma que desea. El enfoque más sencillo será cargar y actualizar los datos cada vez que desee adjuntarlos. Al igual que:

 def write_logs(time,date,name,accuracy,direction): entry = {'time':time,'name':name,'accuracy':accuracy,'direction':direction} log_file = './log'+now_str+'.json' if not os.path.exists(log_file): # Create file with JSON enclosures with open(log_file, mode='w') as f: json.dump([], f) # The file already exists, load and update it with open(log_file, 'r') as r: data = json.load(r) data.append(entry) # Write out updated data with open(log_file, mode='w') as f: json.dump(data, f, indent=3) return [entry]