Erreur d'indentation incompréhensible

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

Bonjour à tous, je suis entrain de développer un script python, seulement voilà j'ai une erreur d'indentation, pourtant il me semble que j'ai correctement indenté. Voici la fonction qui crée problème:

 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
def analyserFichier(chemin):
    """Fonction qui analyse le fichier passé en paramètre pour extraire les données
    importantes qu'il contient
    Paramètre chemin: le chemin relatif par par rapport au script qui éxecute cette fonction
    pour atteindre les fichiers à analyser
    Retour: les différentes listes qui contiennent des informations sur les paquets transmis
    et reçus par le noeuds"""

    #Variables qui vont stocker diverses informations sur les noeuds
    #listes pour la couche physique
    phyRxOk = list()
    phyTxOk = list()
    phyTxDrop = list()
    phyRxDrop = list()
    #listes pour la couche mac
    macRxOk = list()
    macTxOk = list()
    macTxDrop = list()
    macRxDrop = list()

    #initialisation des listes
    initialiserListe(phyRxOk, "Reception")
    initialiserListe(phyTxOk, "Transmission")
    initialiserListe(phyTxDrop, "Transmission")
    initialiserListe(phyRxDrop, "Reception")
    initialiserListe(macRxOk, "Reception")
    initialiserListe(macTxOk, "Transmission")
    initialiserListe(macTxDrop, "Transmission")
    initialiserListe(macRxDrop, "Reception")

    #motif1: motif de la ligne qui contient entre autres les id des noeuds emetteur et recepteur
    #motif2: motif de la ligne qui contient les différentes entêtes qui ont été ajoutés à un paquet
    motif1, motif2 = formerMotif(fichier)

    #on récupère l'ensemble des fichiers du repertoire spécifié dans une liste
    listeFichiers = os.listdir(chemin)
    for fichier in listeFichiers:
        ligne = " " #variable qui représente une ligne du fichier
        with open(fichier, "r") as flux:
            while ligne != '': #boucle qui continue tant qu'il y a une ligne non vide
                ligne = flux.readline()
                if re.match(motif1,ligne):
                    if fichier == 'phy-tx-ok.tr':
                        resultat = re.match(motif1,ligne)
                        sender = int(resultat.group(1))
                        phyTxOk[sender] += 1
                    if fichier == 'mac-rx-end.tr':
                        resultat = re.match(motif1,ligne)
                        receiver = int(resultat.group(1))
                        sender = int(resultat.group(2))
                        if macRxOk[receiver] != []:
                            correct, identifiant = emetteurExiste(macRxOk, sender, receiver)
                            if correct:
                                macRxOk[receiver][identifiant][1] += 1 #on incrémente le nombre de fois qu'on reçoit le paquet pour ce noeud
                            else:
                                macRxOk[receiver].append([sender, 1])
                        else:
                            macRxOk[receiver].append([sender, 1])
    #print macRxOk[0]
    #print phyRxDrop
    #print phyTxOk
    return macRxOk, phyTxOk, phyRxOk, phyTxDrop, phyRxDrop, macTxOk, macTxDrop, macRxDrop

j'ai ce message d'erreur

1
2
3
4
File "analyse_tr.py", line 78
    listeFichiers = os.listdir(chemin)
                                     ^
IndentationError: unindent does not match any outer indentation level

la ligne 78 correspond à la ligne 36 du code. Si quelqu'un peut m'expliquer le pourquoi du problème, ce serait gentil. Merci bien.

Édité par lewoudar

+0 -0
Auteur du sujet

Salut Victor, en lisant ce que tu as dis, j'ai réécris tout le code, et là je n'ai plus ce souci curieusement. Je me demande comment tu as pu deviner ça (est-ce que tu as déjà eu ce problème?). En tout cas merci :)

+0 -0
Staff

Cette réponse a aidé l'auteur du sujet

Pour la prochaine fois, pas mal d'éditeurs permettent de visualiser les espaces. En cochant une option ils affichent des points a la place des espaces et des fleches à la places des tabulations. Ça permet de vite s'en rendre compte.

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte