Partage
  • Partager sur Facebook
  • Partager sur Twitter

Enregistrement et lecture de liste

    6 septembre 2014 à 1:36:56

    Bonjour,

    Je développe actuellement un piti logiciel, qui fonctionne assez bien. Je l'ai presque terminé, mais vient le moment de l'enregistrement des données.

    J'ai 5 listes avec lesquelles l'utilisateur est censé travailler. Pour le moment, à l'ouverture du programme, puisqu'il n'y a pas d'enregistrement, elles sont vides, et de cette forme maliste=[[aaa],[bbb]]

    J'ai entendu parler de pickle, et essayé des manipulations provenant de divers forums, mais je n'arrive pas à enregistrer mes listes, ou alors quand j'y arrive, je ne peux pas les récupérer par la suite.

    Je sollicite donc votre aide pour me permettre de disposer d'un petit code tout simple, juste pour lire les listes de mon fichier, au démarrage, et les replacer dans des variables maliste1, maliste2 etc... Puis pour les enregistrer en quittant mon programme.

    Merci à ceux qui contribueront à la résolution de mon problème.

    PS : Le fichier dans lequel seront stockées mes liste peut être un (.txt) ou autre choses, cela m'est égal.

    • Partager sur Facebook
    • Partager sur Twitter
      6 septembre 2014 à 8:45:50

      Salut,

      voilà un exemple d'utilisation :

      import pickle
      
      # enregistrement dans le fichier de sortie des variables
      #  arbre (dict) et nb_tot (integer)
      with open(out_filename, "wb") as out_file :
          out_file.write(pickle.dumps(arbre))
          out_file.write(pickle.dumps(nb_tot))
      
      # relecture :
      with open(in_file_name, "rb") as in_file :
          try :
              arbre = pickle.load(in_file)
              nb_tot = pickle.load(in_file)
          except UnpicklingError :
              print("!!! fichier corrompu ou incompatble !!!")

      Les fichiers utilisés par pickle sont nécessairement 'binary'.

      pickle permet d'enregistrer tous les types de variables standard et beaucoup de types de variables plus exotiques (bitstring par ex.). C'est vraiment très commode et facile à utiliser.

      • Partager sur Facebook
      • Partager sur Twitter
        6 septembre 2014 à 23:42:40

        ça fonctionne ! Merci beaucoup !

        Je trouve ça bizarre qu'il ne faille pas indiquer quelle liste je souhaite récupérer exactement. Votre code récupère les listes une par une, dans l'ordre d'enregistrement. Je ne peux pas, par exemple, récupérer la 2e sans toucher à la première. Je n'ai pas besoin de faire ça dans mon programme, c'est juste pour savoir.

        • Partager sur Facebook
        • Partager sur Twitter
          7 septembre 2014 à 15:54:55

          Effectivement, les objets sont récupérés dans l'ordre où ils ont été écrits. Comme les fichiers texte, les fichiers binaires utilisés par pickle sont "séquentiels" : on ne peut les lires que dans l'ordre d'écriture. Si on veut accéder au 2eme objet, il faudra avant lire le 1er ...

          L'accés direct à un enregistrement dans un fichier nécessite des fichiers d'un autre type (random access). Perso, je n'ai pas eu à en utiliser en Python et je ne saurais pas t'en dire beaucoup plus, désolé  :honte:

          (voir par ex. du coté de DatabasesInterfaces rubrique Records_based Interfaces)

          -
          Edité par Rozo2 7 septembre 2014 à 16:56:15

          • Partager sur Facebook
          • Partager sur Twitter

          Enregistrement et lecture de liste

          × 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