Partage
  • Partager sur Facebook
  • Partager sur Twitter

Module pickle python

    30 décembre 2021 à 17:42:00

    Salut...Svp j'apprends à programmer en python et j suis au niveau de la manipulation des fichiers. J'essaie d'utilser le module pickle mais je reçois un message d'erreur à chaque fois....Voici le code

    # -*- coding: Utf-8 -*-
    import pickle
    ab=open("a.txt","rb")
    x=pickle.load(ab)
    print x 

    Le message d'erreur

    Traceback (most recent call last):
      File "F2.py", line 4, in <module>
        x=pickle.load(ab)
      File "/usr/lib/python2.7/pickle.py", line 1384, in load
        return Unpickler(file).load()
      File "/usr/lib/python2.7/pickle.py", line 864, in load
        dispatch[key](self)
      File "/usr/lib/python2.7/pickle.py", line 1148, in load_pop_mark
        k = self.marker()
      File "/usr/lib/python2.7/pickle.py", line 880, in marker
        while stack[k] is not mark: k = k-1
    IndexError: list index out of range
    

    Aidez moi à comprendre là où j'ai fauté


    • Partager sur Facebook
    • Partager sur Twitter
      30 décembre 2021 à 18:08:55

      On ne sait pas trop si le fichier lu a été fabriqué avec pickle ou pas... et vous avez des exemples simples dans la documentation de la bibliothèque.
      • Partager sur Facebook
      • Partager sur Twitter
        31 décembre 2021 à 9:22:29

        J'ai crée le fichier à l'aide de kate.........J'ai lu la documentation mais j n'ai rien compris....aidez moi svp
        • Partager sur Facebook
        • Partager sur Twitter
          31 décembre 2021 à 9:48:08

          AbelAbouka a écrit:

          J'ai crée le fichier à l'aide de kate.........J'ai lu la documentation mais j n'ai rien compris....aidez moi svp


          Si c'est pour redire ce que vous n'avez déjà pas compris... en tout cas kate est un éditeur de programme et çà ne va probablement pas créer un fichier pickle.
          • Partager sur Facebook
          • Partager sur Twitter
            31 décembre 2021 à 11:18:16

            Bonjour,

            Un petit exemple d'écriture, puis de lecture d'un fichier Pickle:

            import pickle
            
            n = 12
            L1 = [1,2]
            L2 = [3,4]
            dico = {0:'a', 1:'b'}
            
            #ecrire
            with open('pick.txt','wb') as fo:
                pickle.dump(n, fo)
                pickle.dump(L1, fo)
                pickle.dump(L2, fo)
                pickle.dump(dico, fo)
            
            #lire
            with open('pick.txt','rb') as fo:
                n = pickle.load(fo)
                t1 = pickle.load(fo)
                t2 = pickle.load(fo)
                t3 = pickle.load(fo)
            
            print(n)
            print(t1)
            print(t2)
            print(t3, t3[1])



            • Partager sur Facebook
            • Partager sur Twitter
              31 décembre 2021 à 12:11:07

              Phil_1857 a écrit:

              Bonjour,

              Un petit exemple d'écriture, puis de lecture d'un fichier Pickle:

              import pickle
              
              n = 12
              L1 = [1,2]
              L2 = [3,4]
              dico = {0:'a', 1:'b'}
              
              #ecrire
              with open('pick.txt','wb') as fo:
                  pickle.dump(n, fo)
                  pickle.dump(L1, fo)
                  pickle.dump(L2, fo)
                  pickle.dump(dico, fo)
              
              #lire
              with open('pick.txt','rb') as fo:
                  n = pickle.load(fo)
                  t1 = pickle.load(fo)
                  t2 = pickle.load(fo)
                  t3 = pickle.load(fo)
              
              print(n)
              print(t1)
              print(t2)
              print(t3, t3[1])


              Du coup l'extension du fichier n'est plus représentatif car ce n'est pas un fichier texte plutot utiliser .pickle, .pkl ou encore .p



              -
              Edité par Diablo76 31 décembre 2021 à 12:12:24

              • Partager sur Facebook
              • Partager sur Twitter
                31 décembre 2021 à 12:48:51

                Diablo76 a écrit:

                Du coup l'extension du fichier n'est plus représentatif car ce n'est pas un fichier texte plutot utiliser .pickle, .pkl ou encore .

                Tout à fait.

                D'ailleurs, si on est un peu curieux de voir à quoi ça ressemble on peut jouer avec dans la console:

                >>> import pickle
                >>> L = 1, 2, 3
                >>> pickle.dumps(L)
                b'\x80\x04\x95\t\x00\x00\x00\x00\x00\x00\x00K\x01K\x02K\x03\x87\x94.'
                >>> pickle.loads(_)
                (1, 2, 3)
                >>>
                Et si le PO voulait bien regarder le contenu du fichier qu'il essaie de faire passer à la moulinette plutôt que de simplement constater "ça marche pas...", on pourrait avancer.

                -
                Edité par mps 31 décembre 2021 à 12:50:40

                • Partager sur Facebook
                • Partager sur Twitter
                  31 décembre 2021 à 16:03:45

                  Donc en gros pour utiliser pickle, il faut un fichier creer à partir de pickle.....Merci

                  • Partager sur Facebook
                  • Partager sur Twitter
                    1 janvier 2022 à 12:56:42

                    Bonjour Diablo76,

                    Mais oui, pourquoi ai-je mis une extension .txt alors que c'est un fichier binaire ...

                    • Partager sur Facebook
                    • Partager sur Twitter
                      1 janvier 2022 à 13:23:44

                      AbelAbouka a écrit:

                      Donc en gros pour utiliser pickle, il faut un fichier creer à partir de pickle.....Merci


                      Et si vous aviez vraiment lu la documentation (comme vous l'avez prétendu), vous le sauriez. Par contre, préciser ce que vous vouliez faire en utilisant pickle (le pourquoi vous a amené à...) aiderait à suggérer une solution plus adaptée.

                      -
                      Edité par mps 1 janvier 2022 à 13:25:18

                      • Partager sur Facebook
                      • Partager sur Twitter

                      Module pickle python

                      × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                      • Editeur
                      • Markdown