IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Lecture et écriture binaire d'un dictionnaire dans un fichier


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    100
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 100
    Par défaut Lecture et écriture binaire d'un dictionnaire dans un fichier
    Bonjour,

    j'essaie de coder une fonction qui me permette d'insérer le nom et le score d'un joueur dans un fichier binaire, afin d'obtenir un dico du genre {toto: 0, titi: 50, fifi: 20}
    Vous l'aurez compris, je débute et je ne vois pas mon erreur, voici mon code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    # -*-coding:Utf-8 -*
     
    import pickle
    import os.path
     
    # Ajout du joueur à la suite du fichier
    def ajout_joueur(nom_joueur, score):
        score_joueur = {nom_joueur: score}
        file = open('scores_file', 'ab')
        pickle.dump(score_joueur, file)
     
    # Check si le fichier existe
    def verif_file(nom_joueur):
     
        sf = 'scores_file'
        # si le fichier existe, on check si le joueur est présent dans le fichier
        if os.path.isfile(sf):
            verif_joueur(nom_joueur)
        # si le fichier n'existe pas, on créé le fichier avec le nom du joueur et le score 0
        else:
            score_joueur = {nom_joueur: 0}
            file = open('scores_file', 'wb')
            pickle.dump(score_joueur, file)
            file.close
     
    # Check si le joueur est dans le fichier
    def verif_joueur(nom_joueur):
     
        file = open('scores_file', 'rb')
        content = pickle.load(file)
        print(content)
        ajout_joueur(nom_joueur, 10)
        file.close()
     
    def verif_scores(nom_joueur):
     
        verif_file(nom_joueur)
    J'ai mis une valeur de score à 10 pour le test, mon problème est que je ne parviens pas à lister tous les éléments de mon fichier, ça affiche uniquement le premier. Merci d'avance.

    PS : j'ai retiré la condition de vérification du joueur volontairement, du coup il peut y avoir plusieurs joueurs qui s'appellent "toto", mais ça ne change rien à mon souci.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 743
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 743
    Par défaut
    Salut,

    Citation Envoyé par pitxu Voir le message
    j'essaie de coder une fonction qui me permette d'insérer le nom et le score d'un joueur dans un fichier binaire, afin d'obtenir un dico du genre {toto: 0, titi: 50, fifi: 20}
    Le dico {toto: 0, titi: 50, fifi: 20} n'est pas la suite de dicos {toto: 0 }, { titi: 50}, {fifi: 20}.
    Relisez votre fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def ajout_joueur(nom_joueur, score):
        score_joueur = {nom_joueur: score}
        file = open('scores_file', 'ab')
        pickle.dump(score_joueur, file)
    a chaque appel, elle ajoutera un dico au fichier.

    Et côté "lecture", pickle.load lira juste assez pour récupérer un objet: il faudra l'appeler plusieurs fois, si vous voulez récupérer les différents dicos/objets.

    La question étant pourquoi ne sauvez/lisez pas le dico/objet contenant tous les joueurs et leur score?

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre Expert

    Homme Profil pro
    Ingénieur calcul scientifique
    Inscrit en
    Mars 2013
    Messages
    1 229
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur calcul scientifique

    Informations forums :
    Inscription : Mars 2013
    Messages : 1 229
    Par défaut
    Pour stocker des listes, des dicos ou des combinaisaons de ces 2 trucs là, on n'a pas besoin de le faire à la main en python. Regarder du côté de json.

Discussions similaires

  1. [Python 3.X] Ecrire les éléments d'un dictionnaire dans un fichier excel
    Par StarrK dans le forum Général Python
    Réponses: 4
    Dernier message: 27/02/2018, 22h17
  2. Réponses: 12
    Dernier message: 26/08/2015, 20h10
  3. Trier données sous forme de dictionnaire dans un fichier
    Par pinard dans le forum Général Python
    Réponses: 3
    Dernier message: 17/11/2011, 17h37
  4. Écriture d'un champ texte dans un fichier
    Par rangersx dans le forum Langage
    Réponses: 2
    Dernier message: 28/03/2009, 13h34
  5. écriture +contenu d'un Textfield+ dans un fichier
    Par minola dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 11/12/2007, 14h06

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo