es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo agregar un archivo .json que consiste en una lista con el modo de apendizar open()?

Por ejemplo, tengo TEST.json escrito como:

[{"Alice" : 1, "Betty": 2}]

¿Hay alguna manera de agregar el json actual como

[{"Alice" : 1, "Betty": 2}, {"Alice" : 10, "Betty": 20}]

usando el método ‘con modo de apertura agregar’? ej:

with open("TEST.json", "a+") as f:
    json.dump(blablabla)

Como tengo que editar alrededor de 60 millones de archivos, no voy a usar el código como:

with open("TEST.json", "r") as f:
   data = json.load(f)

appended_data = data.append({"Alice" : 10, "Betty": 20})

with open("TEST.json", "w") as f:
   json.dump(appended_data, f)
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible agregar JSON actual utilizando el método “with open append mode” en Python. El siguiente fragmento de código demuestra esto:

    with open("TEST.json", "a+") as f:
        f.seek(0) # Mover el cursor al principio del archivo
        data = f.read() # Leer los datos JSON existentes
        if data: # Si existen datos
            data = json.loads(data) # Cargar los datos como JSON
        else: # Si no existen datos
            data = [] # Crear una lista vacía
        data.append({"Alice": 10, "Betty": 20}) # Agregar un nuevo diccionario a la lista
        f.seek(0) # Mover el cursor al principio del archivo nuevamente
        f.truncate() # Borrar los datos existentes
        json.dump(data, f) # Volcar los datos actualizados como JSON al archivo
    

    La función f.seek(0) se utiliza para mover el cursor al principio del archivo, ya que el archivo se abre en “modo de agregado”, es decir, el cursor está al final del archivo. La función f.read() se utiliza para leer los datos JSON existentes. Si existen datos, se utiliza la función json.loads() para cargar los datos como JSON; de lo contrario, se crea una lista vacía. Luego, se agrega el nuevo diccionario a la lista utilizando la función append(). Después de eso, se utiliza f.seek(0) nuevamente para mover el cursor al principio del archivo, y f.truncate() se utiliza para borrar los datos existentes. Finalmente, se utiliza la función json.dump() para volcar los datos actualizados como JSON al archivo.

Comments are closed.