Partage
  • Partager sur Facebook
  • Partager sur Twitter

[AIDE] copier plusieurs dico dans un seul fichier

    22 avril 2016 à 14:50:06

    bonjour à tous

    Voilà je cherche à faire un petit prog pour copier différents dico dans un seul et même fichier.

    Quand je copie mon 1er dico avec la fonction pickeSave (ex: stock = {"sonde": 10} ) et que après je le relis avec pickleLoad, pas de soucis.

    Après je rajoute un autre dico ex stock2 avec la fonction pickleAdd, je vois en éditant mon fichier que les valeurs ont été rajoutée, mais quand j'essaie de relire avec pickleLoad, j'ai toujours en boucle le 1er dico.

    Si quelqu'un peut m'aider, merci d'avance !

    Voici bout de code:

    import pickle

    # =======================================================

    def pickleSave(filename, ob):

    with open(filename, 'wb') as savefile:

       pickle.dump(ob, savefile)

    def pickleAdd(filename, ob):

    with open(filename, 'ab') as savefile:

       pickle.dump(ob, savefile)

    def pickleLoad(filename):

    with open(filename, 'rb') as savefile:

       ob = pickle.load(savefile)

    return ob

    • Partager sur Facebook
    • Partager sur Twitter
      22 avril 2016 à 15:30:37

      c'est lors de l'ajout qu'il y a un problème, en fait l'écriture dans le fichier a bien lieu mais n'est pas tenu en compte lors du chargement, je pesne que tu pourrait regler ton probleme de la maniere suivante:

      utiliser une liste de dictionnaire

      de cette maniere tu auras qu'un seul élémant dans le fichier (j'avais utilisé cette méthode auparavant: ca marche.)

      Certes, cela rajoute des variables, prend de la place et fait ramer (car pour ajouter tu vas d'abord devoir charger, ajouter à la liste, puis sauvegarder..)

      import pickle
      def pickleSave(filename, ob):
          with open(filename, 'wb') as savefile:
              pickle.dump([ob], savefile)
      
      def pickleAdd(filename, ob):
          list_ob=pickleLoad(filename)
          print (list_ob)
          with open(filename, 'wb') as savefile:
              pickle.dump(list_ob+[ob], savefile)
              
      
      def pickleLoad(filename):
          with open(filename, 'rb') as savefile:
              ob = pickle.load(savefile)
          return ob

      J'ai eu beau chercher, j'ai pas vraiment trouvé la source du problème... juste un moyen de le contourner... donc j'espère que cela t'aidera assez :/

      • Partager sur Facebook
      • Partager sur Twitter
      Si je suis tête en l'air, c'est par habitude de viser le sommet
        25 avril 2016 à 11:47:53

        Merci pour le conseil, je vais tester ça cette semaine !
        • Partager sur Facebook
        • Partager sur Twitter

        [AIDE] copier plusieurs dico dans un seul fichier

        × 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