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 un programme à partir d'un numéro d'élément d'une chaine


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Chargé de référencement
    Inscrit en
    Novembre 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 89
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chargé de référencement

    Informations forums :
    Inscription : Novembre 2015
    Messages : 11
    Par défaut Arrêter un programme à partir d'un numéro d'élément d'une chaine
    Je veux créer un programme qui lise un type de fichier, donc cette partie c'est bon. Par contre je souhaiterai qu'il m'affiche un messagebox au mon d'un certain nombre de caractère. Mon fichier en question ne possède qu'une ligne ! et 7 éléments.

    Le problème est que je ne trouve pas comment arrêter et afficher de message après la lecture de la première ligne ou du 8ème élément. Vous auriez une idée ?

    Merci


    Voici mon programme :

    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
    import math, codecs
    from qgis.core import *
    ..................
     
     
    def Message(texte) :
        QMessageBox.information(None,"Message",texte) 
     
    #Pour un Fichier gxt 
    # 1--> initialisation de la chaine --> variable globale
    # 2--> definition de l'intervalle de definition de la chaine de caractere 
     
    if not os.path.isfile(fichiergeoref_gxt):
        Message("Fichier inexistant")
     
    else:
        scrFile=open(fichiergeoref_gxt,'r')
        lgr_ch = len(fichiergeoref_gxt)
        x=0
        y=0
    # 4--> Lecture iterative --> lecture par tabulation
        for line in scrFile :
            case_coord = (line.split('\t'))
            x = case_coord [5]
            y = case_coord [6]
     
        scrFile.close()
    -------------------------------------------------------------------------
    ----> mon problème est ici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #if case_coord > case_coord[7] :
    if x is None or y is None:
            Message("Ce n'est pas un fichier GXT")
    -------------------------------------------------------------------------         
    
    else:
        
        jeu_coord = "( " + str(x) +" ; " + str(y) + " )"
        jeu_coord = " Les coordonnees sont : " + jeu_coord 
        Message("Il s'agit d'un fichier GXT, ") 
        Message(jeu_coord)

  2. #2
    Membre confirmé
    Profil pro
    Développeur Back-End
    Inscrit en
    Septembre 2007
    Messages
    81
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Back-End

    Informations forums :
    Inscription : Septembre 2007
    Messages : 81
    Par défaut
    Salut,

    Tu peux utiliser le module 'sys'
    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    import sys
    sys.exit(1)

  3. #3
    Membre habitué
    Homme Profil pro
    Chargé de référencement
    Inscrit en
    Novembre 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 89
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chargé de référencement

    Informations forums :
    Inscription : Novembre 2015
    Messages : 11
    Par défaut
    Salut !

    Ok, j'ai essayer avec exit mais autre chose.
    En fait je veux pas sortir du programme, je voudrais afficher un message à la fin de la lecture du fichier. J'ai du mal à formuler le soucis.
    En fait c'est un problème d'écriture.

    Dans ce passage là, je lis les 6 et 7ème élément de mon fichier.
    for line in scrFile :
    case_coord = (line.split('\t'))
    x = case_coord [5]
    y = case_coord [6]

    if case_coord > case_coord[7] : (ligne fausse) ---> c'est cette ligne que j'arrive pas formuler
    Message("Ce n'est pas un fichier GXT")

    je voudrais lui dire quand tu arrive au 7ème élément ( il n'y en pas) arrête le programme et affiche la " Ce n'est pas un fichier ..."

    Si tu vois le truc ?

  4. #4
    Membre éprouvé
    Homme Profil pro
    employé
    Inscrit en
    Mars 2015
    Messages
    75
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : employé

    Informations forums :
    Inscription : Mars 2015
    Messages : 75
    Par défaut
    Plutôt que mettre none, tu peux mettre False vu que 0 est égal à False, sauf si je dis une bêtise et que j'ai pas compris ton code !
    et Sauf si la valeur peut être différente de 0.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if x is not True or y is not True:
        Message("Ce n'est pas un fichier GXT")
    Edit: Ton Error vient surement du fait que ton élément 7 n'existe peut-être pas ?

  5. #5
    Membre habitué
    Homme Profil pro
    Chargé de référencement
    Inscrit en
    Novembre 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 89
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chargé de référencement

    Informations forums :
    Inscription : Novembre 2015
    Messages : 11
    Par défaut
    Oui c'est ça mon 7ème élément existe pas. Ca risquait pas de marcher.
    Par contre je viens d'essayer ta solution (qui me paraissait très bien) mais ça marche pas non plus.. Je comprends rien à l'algo..
    Si ça peut aider, le contenu de mon fichier.gxt c'est (juste) ça :

    1 Raster Raster 23-2014-0580-6575-LA93.ecw@1417.322835@1417.322835@72@72 0 582500.000000 6572500.000000

    J'arrive à afficher les x, y (5825..., 657...)
    mais dans mon programme en fait, je voudrais que lorsque l'on essaye d'ouvrir un autre fichier, il affiche un message comme quoi c'est pas un gxt.

  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 pierot411 Voir le message
    1 Raster Raster 23-2014-0580-6575-LA93.ecw@1417.322835@1417.322835@72@72 0 582500.000000 6572500.000000

    J'arrive à afficher les x, y (5825..., 657...)
    mais dans mon programme en fait, je voudrais que lorsque l'on essaye d'ouvrir un autre fichier, il affiche un message comme quoi c'est pas un gxt.
    Techniquement, dire "lorsque l'on essaye d'ouvrir un autre fichier" suggère que la chaine de caractère qu'il contient:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1	Raster	Raster	23-2014-0580-6575-LA93.ecw@1417.322835@1417.322835@72@72	0	582500.000000	6572500.000000
    est une constante dont on extrait x et y.
    Autant écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    x = 582500.000000
    y = 6572500.000000
    J'imagine que ce n'est probablement pas ce que vous voulez....
    Mais si vous n'êtes pas plus précis, çà va pas être simple d'exprimer la chose "programmatiquement".
    Et comme on ne sait pas trop lire ce qui se passe dans votre tête...

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

  7. #7
    Membre habitué
    Homme Profil pro
    Chargé de référencement
    Inscrit en
    Novembre 2015
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 89
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chargé de référencement

    Informations forums :
    Inscription : Novembre 2015
    Messages : 11
    Par défaut
    C'est ça :" la chaîne de caractère qu'il contient".
    Je voudrais que mon programme face le distinguo entre un fichier qui contienne :

    I) 1er cas de figure :

    Raster Raster 23-2014-0580-6575-LA93.ecw@1417.322835@1417.322835@72@72 0 582500.000000 6572500.000000

    et un fichier contienne :

    II) 2ème cas de figure :

    Raster Raster 23-2014-0580-6575-LA93.ecw@1417.322835@1417.322835@72@72 0 582500.000000 6572500.000000 12

    soit plus de 6 éléments

    ou :

    Nom de l'image : 23-2014-0580-6575-LA93.ecw
    X minimum : 580000.0000
    X maximum : 585000.0000
    Y minimum : 6570000.0000
    Y maximum : 6575000.0000

    soit plus d'une ligne.


    Je souhaiterai que dans le deuxième cas de figure mon programme me dise que ce n'est pas le fichier attendu.
    C'est plus clair pour vous ?

Discussions similaires

  1. Programme pour renommer cellule à partir d'un numéro d'onglet
    Par priscilla79 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 06/05/2009, 16h24
  2. Trouver le jour de l'année à partir de son numéro
    Par Nounours666 dans le forum C++Builder
    Réponses: 7
    Dernier message: 09/01/2006, 13h20
  3. compilation d'un programme à partir d'un autre programme??
    Par Naruseb dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 11/08/2005, 15h05
  4. Réponses: 2
    Dernier message: 04/06/2004, 10h36

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