Partage
  • Partager sur Facebook
  • Partager sur Twitter

Probleme pour recuperer un dictionnaire entre 2 fonctions

Sujet résolu
    8 mars 2011 à 4:26:30

    Bonjour ,

    alors voila mon probleme ,j'ai un fichier score.dat dans lequel j'ai creer un dictionnaire avec les noms de joueurs comme key et le score comme valeur.

    j'ai fait une fonction qui test le joueur quand il rentrer son nom.
    ma fonction en premier lieu ouvre le fichier score et la deux cas de figure:

    1-le joueur n'existe pas et dans ce cas la fonction l'ajoute au dictionnaire et renvoi le dico a une autre fonction qui se charge de sauvegarder.

    2-le joueur existe et la sa continue a l'avenir sa affichera son meilleur score

    Tout sa fonctionne , mais ce que j'aimerai c'est au lieu de d'ouvrir le fichier et pour recuperer le dico , je voudrai faire une fonction qui se charge de loadé
    le fichier qu'on veut juste en lui indiquant le nom de fichier ..


    def save(obj1,fichier):
        a = open(fichier,'wb')
        pickle.dump(obj1,a)
        a.close()
    
    def testJoueur(joueur):
        fichier = open('score.dat','rb')
        score = pickle.load(fichier)
        fichier.close()
        
        if joueur in score.keys():
            print 'ok'
        else:
            score[joueur]='abc'
            sauve = save(score,'score.dat')
            return 1
    


    (le 'abc' sera remplacer par le score actuel a l'avenir , c'est pour mes tests^^)
    sa sa marche mais si je n'arrive a faire un module dans ce style :

    def load(fichier,nom_objet_retour):
        fichier = open(fichier,'rb')
        nom_objet_retour = pickle.load(fichier)
        fichier.close()
    


    c'est ce que j'essaye de faire mais je ne sais pas comment m'y prendre pour que apres le load elle renvoie le dico a l'autre fonction ..

    si vous avez une ptite idée .. moi plus sa va , plus sa me parait confus lol


    PS : je suis sur Python 2.54
    • Partager sur Facebook
    • Partager sur Twitter
      8 mars 2011 à 10:43:17

      Dans ta fonction Load, tu ajoutes un Return et tu l'appelles dans la fonction que tu veux non ?
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        8 mars 2011 à 12:07:04

        import pickle, os.path
        
        
        
        def loading(fichier):
            chemin_complet = os.path.join(chemin, fichier)
            if os.path.exists(chemin_complet):
                page = pickle.load(file(chemin_complet, 'r+b'))  # file est identique à open, seulement ici on montre que l'on travaille avec des objets fichiers
                return page
        
        
        chemin = "/home/user/Bureau/"
        loading('test.txt')
        
        • Partager sur Facebook
        • Partager sur Twitter
          8 mars 2011 à 21:19:36

          merci pour vos réponses,
          je vais essayer sa ;)
          • Partager sur Facebook
          • Partager sur Twitter
            11 mars 2011 à 1:02:51

            bon alors , depuis je suis passé a la version 3.1 et j'ai installé Ubuntu par la meme occasion ^^

            Donc pour le coup , j'ai relu un peu tout les tutos depuis le début car c'est vrai que sur la 2.5 j'avais certaine commande du tuto qui ne fonctionnai pas .

            donc j'ai réussi a refaire un module pour charger mes fichier et en extraire mon dico , et miracle sa marche ..

            un module pour charger et un module pour sauver :)



            #-*- conding:Latin-1 -*-
            
            
            
            from variables import *
            
            from random import randrange
            
            import pickle
            
            
            
            global score , coup, motchoisi
            
            
            
            def save(obj,Sfichier):
            
                with open (Sfichier,'wb') as fichier:
            
                    sauve =  pickle.Pickler(fichier)
            
                    sauve.dump(obj)
            
                    print ('save Ok')
            
            
            
            def loading(nomdufichier):
            
                with open (nomdufichier,'rb') as fichier :
            
                    recup = pickle.Unpickler(fichier)
            
                    rendu = recup.load()
            
                    return rendu
            
              
            
            def testpseudo(pseudo):
            
                HScore = loading('score.dat')
            
                if pseudo in HScore.keys():
            
                    print ('Ok')
            
                else:
            
                    HScore[pseudo] = score
            
                    save(HScore,'score.dat')
            
                    print (HScore)
            


            j'avance pas super vite mais petit a petit sa prend forme ^^
            • Partager sur Facebook
            • Partager sur Twitter
            Anonyme
              11 mars 2011 à 1:37:23

              Pourquoi tu globalises tes variables score, coup, motchoisi qui je suppose se trouve dans ton fichier variables.py?

              • Partager sur Facebook
              • Partager sur Twitter
                11 mars 2011 à 2:23:23

                pour que mes modules dans le fichier fonctions.py y ai acces et puissent les modifier ..
                • Partager sur Facebook
                • Partager sur Twitter

                Probleme pour recuperer un dictionnaire entre 2 fonctions

                × 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