Partage
  • Partager sur Facebook
  • Partager sur Twitter

import pickle

Sujet résolu
    14 février 2017 à 14:55:19

    import pickle
    with open('donnees', 'wb') as fichier:
        mon_pickler = pickle.Pickler(fichier)
        mon_pickler.dump(score)


    bon le cours OC est un peu rapide dans les explications concernant le module pickle et son utilisation je trouve.

    * au départ, on importe le module

    * ensuite avec le mot clef with (qui refermera le fichier apres traitement), on ouvre le fichier nommé donnees en mode écriture binaire as fichier

    déjà le mode binaire est-il obligatoire ou est-ce juste pour la vitesse de lecture/interprétation de Python?

    * ensuite les deux dernières lignes du code je les comprend sans les comprendre, si quelqun a une explication claire, je suis preneur.

     NB: La variable score est ici un dictionnaire

    -
    Edité par rodeoshell 14 février 2017 à 15:28:53

    • Partager sur Facebook
    • Partager sur Twitter
    soul_expiration = float("inf")
      14 février 2017 à 15:39:19

      déjà le mode binaire est-il obligatoire ou est-ce juste pour la vitesse de lecture/interprétation de Python?

      Oui c'est obligatoire : pickle est un format binaire. Ça n'a strictement rien à voir avec les performances.

      Qu'est-ce qui te bloque sur les deux dernières lignes ? Tu crées un objet Pickler qui va envelopper ton fichier et tu te sers de la méthode dump pour sauvegarder ton dictionnaire dans le fichier en passant par le pickler. Je vois mal ce qu'on peut dire de plus…

      -
      Edité par nohar 14 février 2017 à 15:39:49

      • Partager sur Facebook
      • Partager sur Twitter
      Zeste de Savoir, le site qui en a dans le citron !
        14 février 2017 à 15:44:25

        j'sais pas c'est le truc de créer un objet pickler

        je trouve ca complètement wtf

        car pour moi mon objet c'est score (mon dictionnaire quoi)

        créer un objet pour enregistrer un objet dans un fichier 8-/

        d'ailleurs au fond je comprend même pas ce qu'est un pickler

        -
        Edité par rodeoshell 14 février 2017 à 15:49:53

        • Partager sur Facebook
        • Partager sur Twitter
        soul_expiration = float("inf")
          14 février 2017 à 16:02:35

          Quand tu fais open(...) tu crées un objet qui représente un fichier. Tu peux considérer que cet objet sert à gérer tes opérations de lecture et d'écriture sur ce fichier, donc qu'il représente une couche d'abstraction au-dessus du fichier.

          De la même façon, le Pickler représente une couche d'abstraction supplémentaire au-dessus du fichier, chargée de gérer la transformation de tes objets Python en un format binaire qui sert pour leur stockage (le format pickle) au moment où tu les écris dans le fichier avec dump, et la transformation inverse (binaire -> objet) quand tu lis le ficher avec load. En somme le Pickler représente un fichier dont le contenu est au format pickle. Tu n'as pas besoin de connaître le détail du format, il fait tout pour toi.

          Dans le même genre tu peux imaginer créer un objet ZipFile autour d'un fichier ouvert en binaire, qui sert à gérer la compression ou la decompression des données au moment où elles sont lues ou écrites dans le fichier (d'ailleurs ça existe dans la bibliothèque standard de Python). Le ZipFile représente donc un fichier dont le contenu est compressé au format zip.

          -
          Edité par nohar 14 février 2017 à 16:22:55

          • Partager sur Facebook
          • Partager sur Twitter
          Zeste de Savoir, le site qui en a dans le citron !
            14 février 2017 à 22:56:24

            merci beaucoup nohar

            faut juste que je regarde maintenant un truc par rapport au chemin relatif, si il est justement relatif par rapport à là où se trouve mon programme.py

            -
            Edité par rodeoshell 14 février 2017 à 22:58:00

            • Partager sur Facebook
            • Partager sur Twitter
            soul_expiration = float("inf")
              15 février 2017 à 8:03:04

              Le chemin est toujours relatif par rapport au repertoire courant dans lequel le programme est exécuté (os.getcwd()). Pour avoir un chemin relatif au module :

              from os import path
              chemin = path.join(path.dirname(__file__), chemin_relatif)
              

              Ou en Python > 3.4 :

              from pathlib import Path
              chemin = Path(__file__).parent / chemin_relatif
              
              • Partager sur Facebook
              • Partager sur Twitter
              Zeste de Savoir, le site qui en a dans le citron !

              import pickle

              × 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