Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme dans TP du pendu

Lecture d'un dictionnaire a partir d'un fichier

Sujet résolu
    25 juillet 2011 à 18:26:34

    Bonjour,
    J'essaie de réaliser le deuxième TP du tutoriel de prolixe et 6pril et je suis bloquer dans la lecture des objets enregistré dans le fichier score.L'interpréteur m'indique un problème de type EOFError malgré qu'il existe bien des données dans le fichier.voila le code:
    from random import randrange
    import pickle
    print("Bonjour donner votre nom ")
    nom = input()
    
    trouve = False
    score = dict()
    with open('score.txt','rb') as f:
        if f.read()!= "" :
            pic = pickle.Unpickler(f)
            #try:
            score = pic.load()
            #except:
            print("erreur de lecture du fichier")
        
            for cle,value in score.items():
                if cle == nom:
                    print("votre nom est {0} et votre score est {1}".format(nom,value))
                    trouve = True
                    break
        else:
            score = {nom:0}
            print("votre nom est {0} et votre score est 0".format(nom))
    

    et voila le message d'erreur :
    Traceback (most recent call last):
      File "C:\Users\r\Desktop\PythonPendu\pendu.py", line 14, in <module>
        score = pic.load()
    EOFError
    



    merci pour votre aide.
    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      28 juillet 2011 à 18:14:46

      autant pour moi j'ai pas vu que tu avais utilisé la classe Unpickler

      pourquoi tu n'utilises pas simplement pickle.load()

      data = pickle.load(open(ton_fichier, 'rb'))
      data.readline()
      
      • Partager sur Facebook
      • Partager sur Twitter
        28 juillet 2011 à 18:28:12

        c'est ce que j'ai utilisé,
        if f.read()!= "" :
                pic = pickle.Unpickler(f)
                score = pic.load()
        

        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          28 juillet 2011 à 18:37:40

          ça fonctionne très bien chez moi, tu l'as picklé avant de l'unpickler?

          >>> liste = [12, 5, 9]
          >>> import pickle
          >>> ser = pickle.Pickler(open('test.txt', 'wb'))
          >>> ser.dump(liste)
          >>> ser = pickle.Unpickler(open('test.txt', 'rb'))
          >>> ser.load()
          [12, 5, 9]
          
          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            28 juillet 2011 à 18:42:47

            Citation : Barbaross15

            c'est ce que j'ai utilisé,

            if f.read()!= "" :
                    pic = pickle.Unpickler(f)
                    score = pic.load()
            




            Si tu lis le fichier avant de passer le descripteur de fichier à unpickler c'est normal que ce dernier ne parvienne pas à lire les données...

            [edit] Pour être plus clair, une fois que tu a lu le fichier (f.read()), le curseur se retrouve à la fin du fichier (EOF = End Of File).
            • Partager sur Facebook
            • Partager sur Twitter
              28 juillet 2011 à 18:54:15

              Oui c'est logique et ça marché.
              Merci PsycoPy et fred1599
              • Partager sur Facebook
              • Partager sur Twitter

              Probleme dans TP du pendu

              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
              • Editeur
              • Markdown