Escribir JSON en un archivo en Python
JSON es un formato de archivo ligero y legible por humanos que se utiliza mucho en la industria. JSON significa JavaScript Object Notation
. Como su nombre indica, JSON es muy popular entre los desarrolladores web y se utiliza mucho en aplicaciones web para enviar y recuperar datos del servidor u otras aplicaciones.
Python viene con muchos paquetes o módulos incorporados y tiene muchos módulos externos disponibles en Internet para nuestro uso. Curiosamente, también tiene un módulo incorporado, json
, para manejar datos JSON.
En Python, JSON se puede representar de dos formas. Primero, como cadenas. Una cadena JSON se ve así.
jsonString = '{ "name": "DelftStack", "email": "DelftStack@domain.com", "age": 20, "country": "Netherlands", "city": "Delft"}'
Al representar JSON como una cadena, asegúrese de usar solo comillas dobles (""
) para ajustar las claves y los valores de la cadena. JSON no admite la cita única y arroja un error si se utiliza la cita única.
La segunda forma es utilizando el objeto Python o conocido popularmente como diccionario Python. Tiene una sintaxis similar a la de un JSON.
La representación del JSON en forma de diccionario de Python se vería así.
jsonObject = {
"name": "DelftStack",
"email": "DelftStack@domain.com",
"age": 20,
"country": "Netherlands",
"city": "Delft",
}
Nuevamente, asegúrese de usar solo comillas dobles.
Escribir JSON en un archivo con el módulo json
en Python
Suponga que tiene una variable que almacena un JSON en forma de cadena. Entonces, para escribirlo en un archivo JSON, puede usar el siguiente código.
import json
fileName = "my-data.json"
jsonString = '{ "name": "DelftStack", "email": "DelftStack@domain.com", "age": 20, "country": "Netherlands", "city": "Delft"}'
jsonString = json.loads(jsonString)
file = open(fileName, "w")
json.dump(jsonString, file)
file.close()
Primero, hemos importado el módulo json
. Luego, hemos almacenado el nombre del archivo JSON y la propia cadena JSON en dos variables. Luego estamos creando y abriendo un nuevo archivo con el nombre que elegimos en modo write
.
Luego, usamos la función loads
del módulo json
para convertir la cadena JSON en un diccionario de Python para escribirla en un archivo. La función acepta una cadena JSON válida y la convierte en un diccionario de Python.
Tenga en cuenta que si se proporciona una cadena no válida a esta función, arroja un error
json.decoder.JSONDecodeError
. Por lo tanto, asegúrese de pasar una cadena correcta o tal vez use un bloquetry-except-finally
para el manejo de errores.
A continuación, usamos el método dump()
que nos proporciona el módulo json
. Este método acepta un diccionario de Python y un descriptor de archivo como parámetros y escribe los datos del diccionario en el archivo.
El método dump()
funciona si y sólo si el archivo no se abre en formato binario, es decir, "wb"
y "rb"
no funcionarán y darán lugar a TypeError
.
Por último, cerramos el archivo y se cierra el programa. Se creará un archivo JSON con el nombre que definió en el programa en el directorio actual.
Si existe un archivo con el mismo nombre y la misma extensión en el directorio de trabajo, el contenido de ese archivo se sobrescribirá.
Ahora, suponga que desea escribir un objeto Python o un diccionario Python en un archivo JSON. En ese caso, consulte el siguiente fragmento de código.
import json
fileName = "my-data.json"
jsonObject = {
"name": "DelftStack",
"email": "DelftStack@domain.com",
"age": 20,
"country": "Netherlands",
"city": "Delft",
}
file = open(fileName, "w")
json.dump(jsonObject, file)
file.close()
En este caso, ya tenemos el objeto o diccionario de Python, y el dump()
, como se explicó anteriormente, acepta un diccionario como parámetro y lo escribe en el descriptor del archivo. Entonces, abrimos un archivo en modo de escritura, escribimos los datos en el archivo usando el método dump()
y cerramos el archivo.