Comment puis-je utiliser le décapant à enregistrer un dict?
J'ai regardé à travers les informations que le Python docs donner, mais je suis toujours un peu confus. Quelqu'un pourrait poster un exemple de code qui permettrait d'écrire un nouveau fichier, puis utilisez les achards de faire un dump d'un dictionnaire en elle?
- Lisez ceci: doughellmann.com/PyMOTW/pickle et de revenir quand vous avez besoin d'une question spécifique
- -1 Voir les commentaires précédents. Essayez-la. Ensuite, si ça ne marchait pas (il ne sera pas toujours), une question peut être formulée (avec une hypothèse ou deux qui peuvent être testés, et "demandé", peut-être avant de poser la question à d'autres personnes). E. g il y avait une erreur de syntaxe? Une exception? Ne viennent les valeurs dos tronquées?
- J'ai essayé de l'utiliser pour enregistrer les informations de pygame. J'ai utilisé les informations ci-dessus et mon code ressemble à ceci:
- nom = raw_input('nom du fichier d'entrée:') tf = open(nom+'.pkl','wb') cornichon.dump(total,tf) tf.close()
- Le problème est, je reçois un message d'erreur indiquant qu'il ne peut pas cornichons à la surface des objets. Est-il un moyen de contourner cela? J'ai plusieurs rect objets enregistré sous le total.
- Vous devez poser une nouvelle question sur la façon de cornichons à la surface des objets
- Vérifiez ici, mais d'abord stackoverflow.com/questions/5145664/...
- Maintenant, la première réponse est ce qui rend ton commentaire est inutile et que cette question importante.
- Je ne pense pas que j'ai jamais posté quoi que ce soit sur cette page.
- Hein, je me souviens de poster que maintenant, il y a longtemps. Je certainement n'ai pas le supprimer dans les 2 derniers jours, cependant. Peut-être que quelqu'un d'autre a supprimé mon commentaire en réponse à votre commentaire?
- Ah, que c'est probablement vrai - mes excuses pour être impoli à ce sujet.
Vous devez vous connecter pour publier un commentaire.
Essayez ceci:
pickle.HIGHEST_PROTOCOL
?__slots__
). Je ne dis pas que vous devriez toujours utiliserHIGHEST_PROTOCOL
, mais vous assurer que vous n'utilisez pas le protocole de 0 ou 1 est en fait assez important.pickle.HIGHEST_PROTOCOL
faire réellement?protocol=-1
(similaire à -1 indexation dans une liste).L'avantage de
HIGHEST_PROTOCOL
est que les fichiers sont plus petits. Cela rend unpickling parfois beaucoup plus rapide.Avis Important: La taille maximale de fichier pickle est d'environ 2 go.
Autre façon
D'Autres Formats
Pour votre application, les éléments suivants pourraient être importantes:
Voir aussi: Comparaison des formats de sérialisation de données
Dans le cas où vous êtes plutôt à la recherche d'un moyen de faire des fichiers de configuration, vous pouvez lire mon article court Les fichiers de Configuration en Python
En général, le décapage d'un
dict
sera pas, sauf si vous avez seulement des objets simples, comme les chaînes et les nombres entiers.Même un vraiment simple
dict
échouent souvent. Tout dépend du contenu.Toutefois, si vous utilisez une meilleure sérialiseur comme
dill
oucloudpickle
, puis la plupart des dictionnaires peuvent être traitées:Ou si vous souhaitez enregistrer votre
dict
à un fichier...Le second exemple est identique à l'une des autres bonnes réponses posté ici (en dehors de négliger la picklability du contenu de la
dict
sont bons).normalement, il est préférable d'utiliser le cPickle à la mise en œuvre
Moyen Simple de faire un dump d'un Python de données (par exemple, le dictionnaire) pour un cornichon fichier.
Si vous voulez juste pour stocker les dict dans un seul fichier, utilisez
pickle
comme çaSi vous voulez sauvegarder et restaurer plusieurs dictionnaires en plusieurs fichiers pour
la mise en cache et de stocker plus de données complexes,
utilisation anycache.
Tous les autres trucs que vous avez besoin autour de
pickle
Anycache stocke les différents
myfunc
les résultats en fonction des arguments de lales différents fichiers dans
cachedir
et recharge eux.Voir le la documentation pour plus de détails.
J'ai trouvé le décapage à confusion (peut-être parce que je suis d'épaisseur). J'ai trouvé que cela fonctionne, mais:
Que vous pouvez ensuite écrire dans un fichier texte. J'ai renoncé à essayer d'utiliser des cornichons que j'étais d'avoir des erreurs de me dire d'écrire des entiers en un .dat fichier. Je m'excuse pour ne pas utiliser de cornichon.