En Python, ¿cuál es la diferencia entre json.load()y json.loads()?
Supongo que la carga () la función se debe utilizar con un objeto de archivo (Necesito por lo tanto utilizar un gestor de contexto), mientras que las () cargas de función toman la ruta del archivo como una cadena. Es un poco confuso.
¿La letra " s " enjson.loads() significa cadena ?
¡Muchas gracias por sus respuestas!
python
json
python-2.7
MMF
fuente
fuente

json.loads(s, *)- Deserializes(astr,bytesobytearrayejemplo que contiene un documento JSON) - docs.python.org/3.6/library/json.htmlRespuestas:
Sí,
ssignifica cuerda. Lajson.loadsfunción no toma la ruta del archivo, sino el contenido del archivo como una cadena. ¡Mira la documentación en https://docs.python.org/2/library/json.html !fuente
Solo voy a agregar un ejemplo simple a lo que todos han explicado,
json.load ()
json.loadpuede deserializar un archivo en sí mismo, es decir, acepta unfileobjeto, por ejemplo,dará salida,
Si uso
json.loadspara abrir un archivo en su lugar,Me daría este error:
json.loads ()
json.loads()deserializar cadena.Entonces, para usarlo
json.loads, tendré que pasar el contenido del archivo usandoread()función, por ejemplo,utilizando
content.read()con eljson.loads()contenido de retorno del archivo,Salida,
Eso es porque tipo de
content.read()es una cadena, es decir<type 'str'>Si uso
json.load()concontent.read(), obtendré un error,Da,
Entonces, ahora sabes el
json.loadarchivo deserialze yjson.loadsdeserializar una cadena.Otro ejemplo,
sys.stdindevolverfileobjeto, así que si lo hagoprint(json.load(sys.stdin)), obtendré datos json reales,Si quiero usar
json.loads(), lo haría en suprint(json.loads(sys.stdin.read()))lugar.fuente
with open()yjson.loads()devuelve una excepción:TypeError: the JSON object must be str, bytes or bytearray, not 'TextIOWrapper'La documentación es bastante clara: https://docs.python.org/2/library/json.html
Así
loades para un archivo,loadspara unstringfuente
RESPUESTA RÁPIDA (¡muy simplificado!)
EJEMPLOS
fuente
json.dump/dumps&json.load/loadsbogotobogo.com/python/…El método json.load () (sin "s" en "load") puede leer un archivo directamente:
Método json.loads () , que se usa solo para argumentos de cadena .
Aquí, podemos ver que después de usar cargas () toma una cadena (tipo (cadena)) como un diccionario de entrada y retorno .
fuente
En python3.7.7, la definición de json.load es la siguiente según el código fuente de cpython :
json.load en realidad llama a json.loads y se usa
fp.read()como primer argumento.Entonces, si su código es:
Es lo mismo hacer esto:
Pero si necesita especificar la lectura de bytes del archivo como like
fp.read(10)o la cadena / bytes que desea deserializar no es del archivo, debe usar json.loads ()En cuanto a json.loads (), no solo deserializa la cadena sino también los bytes. Si
ses bytes o bytearray, primero se decodificará en cadena. También puedes encontrarlo en el código fuente.fuente