Disons que j'ai quelque chose comme ça:
d = { "abc" : [1, 2, 3], "qwerty" : [4,5,6] }
Quel est le moyen le plus simple de prochargmatiquement Obtenir cela dans un fichier que je peux charger de python plus tard?
Puis-je l'enregistrer en quelque sorte comme python source (à partir d'un fichier A python Script, non manuellement!), Alors import
plus tard?
Ou devrais-je utiliser JSON ou quelque chose?
Utilisez le module cornichon .
import pickle
d = { "abc" : [1, 2, 3], "qwerty" : [4,5,6] }
afile = open(r'C:\d.pkl', 'wb')
pickle.dump(d, afile)
afile.close()
#reload object from file
file2 = open(r'C:\d.pkl', 'rb')
new_d = pickle.load(file2)
file2.close()
#print dictionary object loaded from file
print new_d
Essayez le module d'étagère qui vous donnera un dictionnaire persistant, par exemple:
import shelve
d = { "abc" : [1, 2, 3], "qwerty" : [4,5,6] }
shelf = shelve.open('shelf_file')
for key in d:
shelf[key] = d[key]
shelf.close()
....
# reopen the shelf
shelf = shelve.open('shelf_file')
print(shelf) # => {'qwerty': [4, 5, 6], 'abc': [1, 2, 3]}
Vous voudrez peut-être également jeter un coup d'œil à la base de données d'objets de Zope Le plus complexe que vous obtenez :-) Probablement surkill pour ce que vous avez, mais cela échoue bien et n'est pas trop difficile à utiliser.
Si vous souhaitez l'enregistrer dans un format de type JSON facile à lire, utilisez repr
pour sérialiser l'objet et eval
pour le désérialiser.
repr(object) -> string
Renvoyer la représentation de chaîne canonique de l'objet. Pour la plupart des types d'objets,
eval(repr(object)) == object
.
Juste pour ajouter aux suggestions précédentes, si vous souhaitez que le format de fichier soit facilement lisible et modifiable, vous pouvez également utiliser [~ # ~ # ~ # ~ ~] . Cela fonctionne extrêmement bien pour les dicts et les listes imbriqués, mais des échectes pour des structures de données plus complexes (c'est-à-dire des objets personnalisés) également, ainsi que son gros plus est que le format est lisible.