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 :

Qu'est-ce que l'erreur unexpected indent [Débutant(e)]


Sujet :

Python

  1. #1
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut Qu'est-ce que l'erreur unexpected indent
    Bonjour,

    J'ai ce message d'erreur que je n'avais pas avant et pourtant j'ai pas modifier cette partie....
    Je pense que "unexpected indent" est un problème de formatage? Par exemple si on aligne pas bien un if
    Ceci ne marchera pas
    Code PYTHON : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if isSent is True:
    print "OK"
    ceci marchera si on met bien un tab avant le print
    Code PYTHON : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    if isSent is True:
         print "OK"
    Si le premier car génère bien le message "unexpected ident", je pense que mon problème vient de là.

    J'ai ce code
    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
     
    #preparing the insertion
    	add_position = ("INSERT INTO positions "
    		"(devise_id, imei, timestamp, value, lat, lng, alt, heading, speed, sensor, tower, battery) "
    		"VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)")
     
    	data_position = (devise_id,imei,datetime.datetime.fromtimestamp(int(timestamp)).strftime('%Y-%m-%d %H:%M:%S'),value,lat,lng,alt,heading,speed,sensor,tower,battery)
        #
        ## connection
        db = MySQLdb.connect("localhost","root","N0mansland","mqtt")
        cursor = db.cursor()
     
        # http://mysql-python.sourceforge.net/MySQLdb.html#mysqldb
        ## Insertion
        try:
    		cursor.execute(add_position, data_position)
    		db.commit()
        except:
        	db.rollback()
    et ce message quand j'exécute mon scipt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    pierrot@bipme:/var/www/leaflet/rabbit/py$ python receive-new.py 
      File "receive-new.py", line 117
        add_position = ("INSERT INTO positions "
        ^
    IndentationError: unexpected indent
    Si mon raisonnement est juste, je n'arrive pas formater correctement ma variable add_position. Pourtant j'ai bien mis des tab représenté par [tab] et des retour représnter par [cr]. J'ai pas mis tout le code de ma fonction. J'ai juste mis ce qui bloque..
    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
     
    def fu():
    #...some other code....
    [tab]#DEBUG
    [tab]print('')
    [tab]print("Devise_id",devise_id)
    [tab]print("IEMI:",imei)
    [tab]print("Timestamp:",timestamp)
    [tab]print("Value:",value)
    [tab]print("Lat:",lat)
    [tab]print("Lng:",lng)
    [tab]if data["position"]["value"] == 1 :[cr]
    [tab][tab]print("Alt:",alt)[cr]
    [tab][tab]print("Heading:",heading)[cr]
    [tab][tab]print("Speed:",speed)[cr]
    [tab]print("Sensor:",sensor)[cr]
    [tab]print("Tower:",tower)[cr]
    [tab]print("Battery:",battery)[cr]
    [tab]print('')[cr]
    [cr]    
    [tab]#preparing the insertion
    [tab]add_position = ("INSERT INTO positions "[cr]
    [tab][tab]"(devise_id, imei, timestamp, value, lat, lng, alt, heading, speed, sensor, tower, battery) "[cr]
    [tab][tab]"VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s)")[cr]
    [tab]data_position = (devise_id,imei,datetime.datetime.fromtimestamp(int(timestamp)).strftime('%Y-%m-%d %H:%M:%S'),value,lat,lng,alt,heading,speed,sensor,tower,battery)[cr]
    #
    ## connection[cr]
    [tab]db = MySQLdb.connect("localhost","root","N0mansland","mqtt")[cr]
    [tab]cursor = db.cursor()[cr]
    [cr]
    [tab]# http://mysql-python.sourceforge.net/MySQLdb.html#mysqldb
    [tab]## Insertion
    [tab]try:
    [tab][tab]cursor.execute(add_position, data_position)
    [tab][tab]db.commit()
    [tab]except:
    [tab][tab]db.rollback()
    Merci pour votre avis
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par pierrot10 Voir le message
    J'ai ce message d'erreur que je n'avais pas avant et pourtant j'ai pas modifier cette partie....
    Je pense que "unexpected indent" est un problème de formatage? Par exemple si on aligne pas bien un if
    Si vous êtes surpris par ce genre de message d'erreur, il faut prendre le temps de comprendre la structure de blocs d'un programme Python et de lire le chapitre correspondant du Swinnen.

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

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2007
    Messages : 105
    Points : 145
    Points
    145
    Par défaut
    Bonjour,

    Première question, pourquoi les instructions d'affectation des variables add_position et data_position sont elles indentées ?

    J'imagine que probablement ces deux affectations font partie d'un bloque d'instructions.
    Dans ce cas la ligne blanche entre les deux affectations est-elle indentée ?

    Si ce n'est pas le cas, le bloque d'instructions se termine après la première affectation de add_position et du coup l'affectation de data_position n'est pas dans le bon bloque d'instructions.

    Un conseil, revérifier toutes vos indentations, c'est une erreur classique aux débuts.
    Le plus simple est d'utiliser un IDE qui affiche les espaces et les tabulations.

    Il y a aussi des outils pour contrôler l'indentation de son code, mais je ne me souvient plus de leur nom, il faudra utiliser un moteur de recherche.

    Salutations.

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    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 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Citation Envoyé par aepli Voir le message
    J'imagine que probablement ces deux affectations font partie d'un bloque d'instructions.
    Dans ce cas la ligne blanche entre les deux affectations est-elle indentée ?

    Si ce n'est pas le cas, le bloque d'instructions se termine après la première affectation de add_position et du coup l'affectation de data_position n'est pas dans le bon bloque d'instructions.
    Non. On peut avoir des lignes blanches entres les instructions d'un même block (heureusement d'ailleurs car sinon bonjour la prise de tête pour pouvoir éditer un script avec n'importe quel éditeur de texte).

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

  5. #5
    Débutant  
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 096
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 096
    Points : 944
    Points
    944
    Par défaut
    Bonjour
    Je vous remercie pour vos observations.
    Je pense que j'utilisais un mauvais editeur de text. J'utilisais Textwrangler.
    J'ai edité mon script avec le terminal sudo vi monscript.py et là, l'affichage differe.

    J'ai corrigé l'alignement de mes lignes et tout fonctionne. Faudrait que je prenne un autre IDE pour Python.

    merci
    Il ne suffit pas de tout savoir. Vouloir et persévérer, c'est déjà presque tout!

  6. #6
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    105
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : Suisse

    Informations forums :
    Inscription : Septembre 2007
    Messages : 105
    Points : 145
    Points
    145
    Par défaut
    Bonjour,

    Au temps pour moi, navré, j'ai confondu avec l'interpréteur en ligne de commande où l'arrivée d'une ligne blanche fait exécuté le bloque d'instructions précédentes.

    Citation Envoyé par wiztricks Voir le message
    Non. On peut avoir des lignes blanches entres les instructions d'un même block (heureusement d'ailleurs car sinon bonjour la prise de tête pour pouvoir éditer un script avec n'importe quel éditeur de texte).

    - W
    Salutations.

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2010
    Messages
    57
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 57
    Points : 62
    Points
    62
    Par défaut
    Citation Envoyé par pierrot10 Voir le message
    Bonjour
    Je vous remercie pour vos observations.
    Je pense que j'utilisais un mauvais editeur de text. J'utilisais Textwrangler.
    J'ai edité mon script avec le terminal sudo vi monscript.py et là, l'affichage differe.

    J'ai corrigé l'alignement de mes lignes et tout fonctionne. Faudrait que je prenne un autre IDE pour Python.

    merci
    Textwrangle permet d'afficher l’indentation mais à le défaut d'avoir du mal avec certain encodage de fichier autre que UTF-8 ( sur mac en tout cas)

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 06/10/2015, 14h52
  2. Quelle est la plus grosse erreur de programmation que vous ayez jamais commise ?
    Par Katleen Erna dans le forum Débats sur le développement - Le Best Of
    Réponses: 138
    Dernier message: 03/08/2011, 23h38
  3. est ce que j'ai une erreur?
    Par nsqualli dans le forum Macros et VBA Excel
    Réponses: 9
    Dernier message: 26/11/2008, 13h22
  4. Réponses: 4
    Dernier message: 12/10/2008, 20h14
  5. [MySQL] est ce que l'emplacement de la requete est la cause de l'erreur
    Par info_sara dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 13/06/2008, 13h41

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