276 votes

Stocker des dictionnaires Python

J'ai l'habitude d'importer et de sortir des données de Python à l'aide de fichiers CSV, mais cela présente des défis évidents. Existe-t-il des moyens simples de stocker un dictionnaire (ou des ensembles de dictionnaires) dans un fichier JSON ou pickle ?

Par example:

 data = {}
data ['key1'] = "keyinfo"
data ['key2'] = "keyinfo2"

J'aimerais savoir à la fois comment enregistrer cela, puis comment le recharger.

44voto

agf Points 45052

Exemple minimal, écrire directement dans un fichier :

 import json
json.dump(data, open(filename, 'wb'))
data = json.load(open(filename))

ou ouverture/fermeture en toute sécurité :

 import json
with open(filename, 'wb') as outfile:
    json.dump(data, outfile)
with open(filename) as infile:
    data = json.load(infile)

Si vous souhaitez l'enregistrer dans une chaîne au lieu d'un fichier :

 import json
json_str = json.dumps(data)
data = json.loads(json_str)

9voto

Elliott Points 18

Voir aussi le package accéléré ujson :

 import ujson

with open('data.json', 'wb') as fp:
    ujson.dump(data, fp)

7voto

Rafe Kettler Points 29389

Pour écrire dans un fichier :

 import json
myfile.write(json.dumps(mydict))

Pour lire à partir d'un fichier :

 import json
mydict = json.loads(myfile.read())

myfile est l'objet fichier pour le fichier dans lequel vous avez stocké le dict.

5voto

g.d.d.c Points 20164

Si vous recherchez la sérialisation, mais que vous n'avez pas besoin des données dans d'autres programmes, je recommande fortement le module shelve Considérez-le comme un dictionnaire persistant.

 myData = shelve.open('/path/to/file')

# Check for values.
keyVar in myData

# Set values
myData[anotherKey] = someValue

# Save the data for future use.
myData.close()

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X