Looking for python Answers? Try Ask4KnowledgeBase
Looking for python Keywords? Try Ask4Keywords

Python Language `load` vs` charges`, `dump` vs` dumps`


Exemple

Le module json contient des fonctions à la fois pour lire et écrire depuis et vers des chaînes Unicode, ainsi que pour lire et écrire depuis et vers des fichiers. Celles-ci sont différenciées par un s dans le nom de la fonction. Dans ces exemples, nous utilisons un objet StringIO, mais les mêmes fonctions s'appliqueraient à tout objet de type fichier.

Ici, nous utilisons les fonctions basées sur les chaînes:

import json

data = {u"foo": u"bar", u"baz": []}
json_string = json.dumps(data)
# u'{"foo": "bar", "baz": []}'
json.loads(json_string)
# {u"foo": u"bar", u"baz": []}

Et ici, nous utilisons les fonctions basées sur les fichiers:

import json

from io import StringIO

json_file = StringIO()
data = {u"foo": u"bar", u"baz": []}
json.dump(data, json_file)
json_file.seek(0)  # Seek back to the start of the file before reading
json_file_content = json_file.read()
# u'{"foo": "bar", "baz": []}'
json_file.seek(0)  # Seek back to the start of the file before reading
json.load(json_file)
# {u"foo": u"bar", u"baz": []}

Comme vous pouvez le constater, la principale différence est que lors du vidage de données json, vous devez transmettre le descripteur de fichier à la fonction, par opposition à la capture de la valeur de retour. Il convient également de noter que vous devez chercher au début du fichier avant de lire ou d’écrire afin d’éviter toute corruption des données. Lorsque vous ouvrez un fichier, le curseur est placé à la position 0 , de sorte que ce qui suit fonctionnerait également:

import json

json_file_path = './data.json'
data = {u"foo": u"bar", u"baz": []}

with open(json_file_path, 'w') as json_file:
    json.dump(data, json_file)

with open(json_file_path) as json_file:
    json_file_content = json_file.read()
    # u'{"foo": "bar", "baz": []}'

with open(json_file_path) as json_file:
    json.load(json_file)
    # {u"foo": u"bar", u"baz": []}

Avoir les deux manières de gérer les données json vous permet de travailler de manière idiomatique et efficace avec des formats pyspark sur json, tels que json-par-line de pyspark :

# loading from a file
data = [json.loads(line) for line in open(file_path).splitlines()]

# dumping to a file
with open(file_path, 'w') as json_file:
    for item in data:
        json.dump(item, json_file)
        json_file.write('\n')