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 :

Arrêter le script dans une boucle if


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Femme Profil pro
    dessinateur CAO/DAO
    Inscrit en
    Juillet 2017
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : dessinateur CAO/DAO

    Informations forums :
    Inscription : Juillet 2017
    Messages : 46
    Par défaut Arrêter le script dans une boucle if
    Bonjour,

    Je pense que ma question ma question sera simple pour vous.
    Je veux arrêter la lecture de mon programme s'il manque un élément dans mon dossier.

    voici mon code .
    Je voudrai que mon fonction s’arrête s'il manque le fichier excel.
    Malheureusement elle continue malgré la présence de sys.exit() et fonce donc dans le mur puisque les fichiers n'est pas là.

    A pars sys.exit() je ne voie pas d'autre agrument pour arreter le programme. Si quelqu'un peu m'aider s'il vous plais.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    def INTEGRATION(self):
                if Excel == True:
                    print "Fiche EXCEL présent"
                else:
                    print "Fiche identification EXCEL est abscente"
                    tkMessageBox.showerror("STRUCTURE DU DOSSIER","Il manque le dossier la Fiche Excel")
                    sys.exit()
    Bonne journée

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    je pense que showError est bloquant. Mélanger affichage console et graphique n'est pas une bonne idée dans tous les cas. On fait le choix de l'un ou de l'autre...

    showError attend sans doute que l'utilisateur réagisse après appui de l'utilisateur comme par exemple ci-dessous

    Nom : index.png
Affichages : 5849
Taille : 2,6 Ko

    Une fois l'appui, le programme ne se termine pas ?

    Si vous utilisez tkinter, pour quitter, il existe la méthode quit ou destroy selon les besoins.

  3. #3
    Membre confirmé
    Femme Profil pro
    dessinateur CAO/DAO
    Inscrit en
    Juillet 2017
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : dessinateur CAO/DAO

    Informations forums :
    Inscription : Juillet 2017
    Messages : 46
    Par défaut
    Bonjour,

    Merci pour votre aide.
    J'ai mis un message tkinter pour informé l'utilisateur du "pourquoi ça ne fonctionne pas"

    J'ai une fenêtre tkinter d'ouverte qui me sert a lancer les petites programme.
    C'est à partir de cette fenêtre que je lance un programme pour vérifier la présence de différents éléments afin de poursuivre un traitement complet.
    Je trouvais que les tkmessage serait plus parlant mais si ce n'est pas possible.

    Mais comment utiliser .quitt() ou .destroy si je n'ai pas de fenêtre d'ouverte pour cette fonction?

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,

    Citation Envoyé par Nherve Voir le message
    Je voudrai que mon fonction s’arrête s'il manque le fichier excel.
    Malheureusement elle continue malgré la présence de sys.exit() et fonce donc dans le mur puisque les fichiers n'est pas là.
    Le code que vous montrez est bien maigre pour comprendre quoi que ce soit.
    La seule chose qu'on peut dire est que la fonction doit s'arrêter si elle exécute sys.exit (ou plus simplement "return"). Ceci dit, sys.exit lève juste l'exception SystemExit que l'appelant (ou l'appelant de l'appelant) peut ignorer superbement et continuer...

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre confirmé
    Femme Profil pro
    dessinateur CAO/DAO
    Inscrit en
    Juillet 2017
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : dessinateur CAO/DAO

    Informations forums :
    Inscription : Juillet 2017
    Messages : 46
    Par défaut
    Je voulais pas vous dérangé avec un code trop long j’espère que les quelques lignes suffisent.

    Le programme a pour but de vérifier les éléments d'un dossier afin de :
    -> créer une emprise cartographique
    -> importer des données dans une base cartographique
    C'est deux processus fonctionnent

    J'ai indiqué en bleu la zone de code qui pose problème.

    Merci à toutes et a tous.


    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
            def INTEGRATION(self):
                
                #Adresse de basse
                Adresse = r'C:\Users\toto\Documents\TEST PYHON\DONNE DE BASE'    # Adresse permettant d'aller plus vite dans le TkFileDialog
    
                #Environement de travail
                env.workspace = tkFileDialog.askdirectory(initialdir=Adresse,title="Selectionnez le repertoire RESEAUX de l affaire a integrer")
                Dossier = env.workspace
                print "Emplacement : " , Dossier
    
                print "Emplacement de la GDB :" , GDB_RECOLEMENT
    
                #Nom de l'affaire
                NomDossier = os.path.basename(Dossier)
                print "Nom du dossier :" , NomDossier
    
                #Nom du fichier excel rechercher
                FichierExcel = (NomDossier+'.xlsx')
                print "Nom du fichier Excel recherché : " , FichierExcel
    
                AdresseFichier = os.path.join(Dossier,FichierExcel)
                print "Adresse probable du fichier excel :" ,AdresseFichier
    
                Excel = os.path.isfile (AdresseFichier)
                print "Présence du fichier excel :", Excel
    
                RESEAUX=os.path.join(Dossier,'RESEAUX')
                FDP = os.path.join(Dossier,'FOND DE PLAN')
    
    #le problème commence ici
    
                #Procédure de vérification de la structure du l'affaire choisi
                if Excel == True:
                    print "Fiche EXCEL présent"
                else :
                    print "La fiche identification EXCEL abscente"
                    tkMessageBox.showerror("STRUCTURE DU DOSSIER","Il manque la Fiche Excel")
                    sys.exit()
    
                if os.path.exists (RESEAUX):
                    print "Dossier RESEAUX présent"
                else:
                    print "Il manque le dossier RESEAUX"
                    tkMessageBox.showerror("STRUCTURE DU DOSSIER","Il manque le dossier RESEAUX")
                    sys.exit()
    
                if os.path.exists  (FDP):
                    print "Dossier FOND DE PLAN présent"
                else:
                    print "Il manque le dossier FOND DE PLAN"
                    tkMessageBox.showerror("STRUCTURE DU DOSSIER","Il manque le dossier FOND DE PLAN")
                    sys.exit()
    
    
    # C'est ici que je veux que le programme ce ferme si une des trois éléments n'est pas conforme
    
                # ouverture du fichier Excel
                classeur = xlrd.open_workbook(AdresseFichier)
    
                print '################################################################################'
                print '#""""""""""""""""""RECUPERATION DES DONNEES EXCEL"""""""""""""""""""""""""""""""'
    
                # Récupération du nom de toutes les feuilles sous forme de liste
                nom_des_feuilles = classeur.sheet_names()
    
                # Récupération de la première feuille
                feuille = classeur.sheet_by_name(nom_des_feuilles[0])
    
                #Date de creation du projet (feuille excel)
                date= int(feuille.cell_value(16,2)-2)
                #print "date :",date
    
                d0 = datetime.date(1900,1,1)
                deltat= datetime.timedelta(days=(date))
                DateAffaire=d0+deltat
                print "DateAffaire :", DateAffaire
    
                #Date d'integration de emprise
                DateINTEG = datetime.date.today()
                print "Date de creation de EMPRISE :" , DateINTEG
    
                Affaire= format(feuille.cell_value(4,2))
                print "Affaire :",Affaire
    
                CodeCommune= Affaire[0:3]
                print "Code commune :", CodeCommune
    
                Entreprise= format(feuille.cell_value(6,2))
                print "Entreprise :", Entreprise
    
                print '################################################################################'
                print '#"""""""""""""""""""""Creation fichier EMPRISE TEMPORAIRE"""""""""""""""""""""""'
    
                env.workspace = os.path.join(Dossier,'RESEAUX')
                print "env.workspace :" ,env.workspace
    
                etc etc.... il s'agit de copier coller des dossier cartographique dans un dossier général

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Citation Envoyé par Nherve Voir le message
    Je voulais pas vous dérangé avec un code trop long j’espère que les quelques lignes suffisent.
    Puisqu'il y a des "print", postez les sorties lorsqu'il y a un élément manquant.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 062
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 062
    Par défaut
    Je trouvais que les tkmessage serait plus parlant mais si ce n'est pas possible.
    C'est possible, mais peu utile, l'avertissement console pour un programme console, l'avertissement graphique pour un programme graphique.

    Dans tous les cas, je ne vois pas pourquoi le code ne fonctionne pas en ce qui concerne vos lignes 7 et 8 de votre 1er topic... L'erreur est ailleurs !

    Y a-t-il un message d'erreur sur la console lors de l'exécution ? Comme le dis wiztrick, qu'annonce les print de votre code ?

  8. #8
    Membre confirmé
    Femme Profil pro
    dessinateur CAO/DAO
    Inscrit en
    Juillet 2017
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 45
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : dessinateur CAO/DAO

    Informations forums :
    Inscription : Juillet 2017
    Messages : 46
    Par défaut
    Bonjour,

    Suite a vos messages j'ai mis en annotation tout les "print" que je pouvais et j'ai relancer le programme.

    Voici les erreurs que j'ai

    Je ne voie donc qu'un problème avec Tkinter

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    
    Traceback (most recent call last):
      File "C:\Python27\ArcGIS10.5\lib\lib-tk\Tkinter.py", line 1537, in __call__
        return self.func(*args)
      File "G:\SDEEG33_Python2-7-13.py", line 1238, in INTEGRATION
        arcpy.MinimumBoundingGeometry_management(SOUT, EMPRISE2,"RECTANGLE_BY_AREA", "ALL")             =>c'est normal puisque le chemin du dossier n'existe pas               
      File "C:\Program Files (x86)\ArcGIS\Desktop10.5\ArcPy\arcpy\management.py", line 2939, in MinimumBoundingGeometry    =>c'est normal ici aussi   
        raise e
    ExecuteError: Échec de l’exécution. Les paramètres ne sont pas valides.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Script map imprimante dans une boucle
    Par coobye dans le forum VBScript
    Réponses: 2
    Dernier message: 17/06/2011, 10h23
  2. Problème avec TNMSMTP dans une boucle.
    Par Orgied dans le forum Web & réseau
    Réponses: 3
    Dernier message: 07/04/2004, 10h19
  3. swf dans une boucle asp
    Par Chucky69 dans le forum Flash
    Réponses: 11
    Dernier message: 10/02/2004, 17h07
  4. [Vb.net] Indexé un objet crée dans une boucle
    Par picpic dans le forum Windows Forms
    Réponses: 10
    Dernier message: 17/12/2003, 14h37
  5. Pause dans une boucle
    Par HT dans le forum Langage
    Réponses: 4
    Dernier message: 03/06/2003, 08h52

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