[pyar] Agregar una nueva linea a archivo JSON

Ignacio Rossi rossi.ignacio en gmail.com
Lun Nov 16 11:12:46 ART 2015


Hola Nicolás,

   Un par de cosas que veo de pasada:
   json.dumps recibe un objeto y devuelve su representación JSON en un
string. El método que escribe la representación JSON a un file handle es
json.dump (sin s al final).
   Si abrís el archivo con 'r+', lees el contenido y después intentas
escribir, va a empezar a escribir al final del archivo. Entonces al
corregir el json.dump y correrlo, vas a ver que te duplica el contenido.
Para evitar eso tenes que agregar un feedJson.seek(0) antes de escribir, o
hacer dos open, uno con mode='r' para leer y otro con mode='w' para
escribir borrando el contenido anterior.
   Una cosa importante para tener cuidado cuando usas el seek: eso no
elimina el contenido anterior del archivo. Si lo que escribis es más corto
que el contenido original, te queda basura al final del archivo. En tu caso
no se ve porque siempre estás haciendo más grande el contenido. Hacer dos
open, uno de lectura y otro de escritura, es más explícito y nunca vas a
tener éste problema.

   Saludos

   Ignacio


El 16 de noviembre de 2015, 10:31, <nicolas471 en openmailbox.org> escribió:

> Hola,
> Tengo un archivo JSON donde mapeo la ubicacion de hosts en diferentes
> pisos, con una estructura asi:
> [
>    {
>     "floor":"PB","hostName":"NICO","place":"PuestoNico"
>     },
> ]
>
> El problema que tengo es que quiero agregar un nuevo objeto a pero no
> estoy pudiendo.
> Tengo esta funcion:
>
> def writeJson(floor, place, hostName):
>
>     with open('hosts.json', mode='r+') as feedJson:
>         feeds = json.load(feedJson)
>         entry = {'floor': floor, 'hostName': hostName, 'place': place}
>         feeds.append(entry)
>         json.dumps(feeds, feedJson)
>
> Cuando finaliza el programa me muestra-"Process finished with exit code
> -1"- y en el archivo JSON no se escribe nada.
> Tambien probe con otros modos de open, pero nada.
>
> Si alguien me puede dar una mano, se lo agradezco
> Saludos
>
> _______________________________________________
> pyar mailing list pyar en python.org.ar
> http://listas.python.org.ar/listinfo/pyar
>
> PyAr - Python Argentina - Sitio web: http://www.python.org.ar/
>
> La lista de PyAr esta Hosteada en USLA - Usuarios de Software Libre de
> Argentina - http://www.usla.org.ar
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.python.org.ar/pipermail/pyar/attachments/20151116/838c94b5/attachment.html>


More information about the pyar mailing list