IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

[try/except] Ignorer les exceptions


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut [try/except] Ignorer les exceptions
    Bonjour !

    J'ai une grande quantité d'opération a faire à la chaine de ce type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
                exif_final['DateTimeDigitized'] = exif_tags[36868]
                exif_final['ExposureTime'] = self._getFrac(exif_tags[33434])
                exif_final['FNumber'] = "%0.1f" % exif_tags[33437][0]/exif_tags[33437][1]
                exif_final['ExposureProgram'] = exif_tags[34850]
                exif_final['ISOSpeedRatings'] = exif_tags[34855]
                exif_final['ApertureValue'] = self._getFrac(exif_tags[37378])            
                exif_final['BrightnessValue'] = self._getFrac(exif_tags[37379])
                exif_final['ExposureBiasValue'] = self._getFrac(exif_tags[37380])
                exif_final['MaxApertureValue'] = self._getFrac(exif_tags[37378])
                exif_final['SubjectDistance'] = self._getFrac(exif_tags[37382])
                exif_final['MeteringMode'] = exif_tags[37383]
                exif_final['LightSource'] = exif_tags[37384]
                exif_final['Flash'] = exif_tags[37385]
                exif_final['FocalLength'] = exif_tags[37386]
                exif_final['FocalPlaneXResolution'] = self._getFrac(exif_tags[41486])
                exif_final['FocalPlaneYResolution'] = self._getFrac(exif_tags[41487])
                exif_final['FocalPlaneResolutionUnit'] = exif_tags[41488]
                exif_final['SensingMethod'] = exif_tags[41495]
    Il s'agit de récuperer des données EXIF d'une image et évidement, quand les données n'existe pas ca leve une exception ... j'aimerai savoir si il y'aurai un moyen d'ignorer les exceptions générés et de juste passer a la ligne suivante au lieu d'aller vers une exception except

    il y a bien la solution de faire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                try: exif_final['Software'] = exif_tags[305]
                except: pass
                try: exif_final['Artist'] = exif_tags[315]
                except: pass
                ...
    pour toutes les ligne mais bon c'est pas très propre je trouve ...

    Merci

  2. #2
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Par défaut
    salut, je pense que si tu passe par un dico, sur laquelle tu lance une boucle for, ca devrait fonctionner, et tu reconstitue un dico en sortie ou si l'information est inexistante pour un exif donné, elle est remplacer par un ''.

    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    exif_dic={exif_final['DateTimeDigitized'] ; exif_tags[36868],
                exif_final['ExposureTime'] : self._getFrac(exif_tags[33434]),
                exif_final['FNumber'] : "%0.1f" % ,exif_tags[33437][0]/exif_tags[33437][1]}
     
    exif_img={}
     
    for i in exif_dic:
        try:
             d_i=exif_dic[i]
        except:
             d_i=''
        exif_img[i]=d_i
    principe de base a travailler mais ca doit marcher.
    A+

  3. #3
    Membre éprouvé Avatar de anthyme
    Homme Profil pro
    Inscrit en
    Mars 2004
    Messages
    1 559
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2004
    Messages : 1 559
    Par défaut
    helas je ne peux pas fonctionner de cette façon car certain élément exif demande des traitement spécifique et different d'affichage ... exemple : le temps d'exposition a presenter de maniere fractionnel

  4. #4
    Membre éclairé
    Avatar de airod
    Homme Profil pro
    Gérant Associé, DMP Santé et Directeur technique
    Inscrit en
    Août 2004
    Messages
    767
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Gérant Associé, DMP Santé et Directeur technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Août 2004
    Messages : 767
    Par défaut
    dans ce cas tu peux traiter le prob différement.

    ex:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    dic_retour={}
    
    def code_exif(code):
         if code == 'exif_final['DateTimeDigitized']':
              valeur=exif_tags[36868]
         elif code=='exif_final['ExposureTime']':
              valeur==exposure() ### étant une fonction retournant une valeur
         elif code == ...:
              valeur= .....
    
        return valeur
    
    def exception(code):
         global dic_retour
         try:
              valeur=code_exif(code)
         except:
              valeur=''
         
          dic_retour['code']=valeur
    ce qui devrait résoudre ton problème. Tu lance une boucle for a partir d'un dico donnant les instructions permettant de récupérer l'exif.
    ex:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    dic_code={exif_final['DateTimeDigitized'] ; exif_tags[36868],
                exif_final['ExposureTime'] : exposure(),
                exif_final['FNumber'] : "%0.1f" % ,exif_tags[33437][0]/exif_tags[33437][1]}
    
    for i in dic_code:
         exception(dic_code[i])
    
    print dic_retour
    je pense que ca doit pouvoir se gérer comme ca.

Discussions similaires

  1. TRI en ignorant les valeurs NULL
    Par PhRey dans le forum VBA Access
    Réponses: 4
    Dernier message: 27/05/2008, 19h04
  2. Les Exceptions ,Try Catch
    Par ginos dans le forum Débuter avec Java
    Réponses: 9
    Dernier message: 03/05/2008, 09h15
  3. ignorer les exception
    Par darkvan8 dans le forum SQL
    Réponses: 7
    Dernier message: 04/02/2008, 14h24
  4. [POO] Gérer les exceptions et les erreurs
    Par iowa dans le forum Langage
    Réponses: 9
    Dernier message: 12/10/2007, 06h38
  5. gérer les exceptions sur les constructeurs?
    Par LESOLEIL dans le forum Général Java
    Réponses: 9
    Dernier message: 15/03/2006, 10h46

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo