Partage
  • Partager sur Facebook
  • Partager sur Twitter

les exeptions

Sujet résolu
    14 décembre 2011 à 13:24:22

    bonjour a tous,je reviens une nouvelle fois demander de l'aide.J'ai un problème avec une IOError et mon bloc try ne veut pas gérer mon exception.plutôt que d'un long discours voila le code.

    programme principal:

    #!/usr/bin/python3.2
    # -*- encode:utf-8 *-
    
    from fonction import lecture_fichier
    from fonction import ecriture_fichier_vierge
    import os
    
    """programme principal du jeu du pendu"""
    
    print("veuillez entrer votre indifiant")
    ident=input()
    ident=str(ident)
    #test pour la verification que l'identifiant existe
    
    os.chdir("/home/snoops/Documents/script python/dossier_test/")
    score_vierge={}
    try:
            lecture_fichier()
    
    
    except IOError:
            print("le programme n'a pas ete ouvert encore")
            ecriture_fichier_vierge()
    
    else:
            print("le fichier est deja creer")
    


    et le programme secondaire

    #!/usr/bin/python3.2
    # -*- encode:utf-8 *-
    
    
    import pickle
    
    """fonctions du programme main"""
    
    def lecture_fichier():
            fichier=open("fichier_annexe","rb")
            fichier_lecture=pickle.Unpickler(fichier)
            lecture=fichier_lecture.load()
            fichier.close()
            return
    
    def ecriture_fichier_vierge():
            fichier=open("fichier_annexe","rb")
            fichier_ecriture=pickle.Pickler(fichier)
            ecriture=fichier_ecriture.dump(score_vierge)
            fichier.close()
            return
    


    Le programme me déclenche une erreur car le fichier n'existe pas et c'est pour cela que je veut créer cette exception.
    la honnêtement je ne vois pas pourquoi il ne veut pas me prendre en compte cette exception.
    auriez vous une idée sur ce problème?
    • Partager sur Facebook
    • Partager sur Twitter
      14 décembre 2011 à 13:42:19

      Peux-tu nous poster l'exception complète qui se produit (avec le traceback) ?

      Edit :
      En attendant :

      def ecriture_fichier_vierge():
          fichier = open("fichier_annexe","rb")
      


      Il y a un problème ici.

      Tu veux écrire un fichier mais tu l'ouvres en lecture (le "r" de "rb"). Tu devrais donc plutôt l'ouvrir en écriture comme cela :

      fichier = open("fichier_annexe", "wb")
      


      Sachant que tu exécutes cette fonction dans la clause except, forcément, si tu entres dans ce bloc à cause d'un premier IOError, le fait d'essayer d'écrire dans un fichier ouvert en lecture seule va lever une seconde IOError, c'est pour cela que le traceback, lorsque tu lis l'exception, a toute son importance : c'est lui qui te dit précisément quel appel a lancé une exception.

      Tu peux te référer à ce post pour apprendre à lire un traceback.
      • Partager sur Facebook
      • Partager sur Twitter
      Zeste de Savoir, le site qui en a dans le citron !
        14 décembre 2011 à 14:18:31

        merci nohar pour ton aide et forcement mon erreur est lié a cette erreur.
        j'ai d'autre erreur qui se sont placée par la suite.Je règle tout ça et si c'est OK je clôture le poste

        bon bah me revoila la dessus.J'ai modifier mon code.Et la je me retrouve avec une erreur EOF.Je ne comprend pas trop.sur le lien que tu m'a filer nohar ca n'y figure pas.

        voila la traceback:

        Traceback (most recent call last):
          File "./prog_main.py", line 18, in <module>
            lecture_fichier()
          File "/home/snoops/Documents/script python/dossier_test/fonction.py", line 12, in lecture_fichier
            lecture=fichier_lecture.load()
        EOFError
        



        #!/usr/bin/python3.2
        # -*- encode:utf-8 *-
        
        from fonction import lecture_fichier
        from fonction import ecriture_fichier_vierge
        import os
        
        """programme principal du jeu du pendu"""
        
        print("veuillez entrer votre indifiant")
        ident=input()
        ident=str(ident)
        #test pour la verification que l'identifiant existe
        
        os.chdir("/home/snoops/Documents/script python/dossier_test/")
        
        try:
                lecture_fichier()
        
        
        except IOError:
                print("le programme n'a pas ete ouvert encore")
                ecriture_fichier_vierge()
        
        print(lecture)
        

        #!/usr/bin/python3.2
        # -*- encode:utf-8 *-
        
        import os
        import pickle
        
        """fonctions du programme main"""
        
        def lecture_fichier():
                fichier=open("fichier_annexe","rb")
                fichier_lecture=pickle.Unpickler(fichier)
                lecture=fichier_lecture.load()
                fichier.close()
                return
        
        def ecriture_fichier_vierge():
                score_vierge={}
                fichier=open("fichier_annexe","wb")
                #permission du fichier correpondant a stat.S_IRWXU(lecture,ecriture,execution par l$
                os.chmod("/home/snoops/Documents/script python/dossier_test/fichier_annexe",448)
                fichier_ecriture=pickle.Pickler(fichier)
                fichier_ecriture.dump(score_vierge)
                fichier.close()
                return
        


        voila le code.ça va peut être en saouler plus d'un :) .Mon erreur je voudrais bien la soulever dans mon try vec un raise par exemple mais je ne sais pas a quoi elle est due.Je pensait au depart a un proble de droit d'ecriture sur le fichier mais çà na pas l'air d’être ça
        • Partager sur Facebook
        • Partager sur Twitter

        les exeptions

        × 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