Probleme de code

a marqué ce sujet comme résolu.

Bonjour, j’ai une erreur que j’ai mis en gras je ne comprend pas c’est quoi le problème si quelqu’un pourrait m’aider s’il vous plait

import sys, re

if len(sys.argv) >= 3:
    aff = {}
    code = sys.argv[2]
    h = sys.argv[3]
    synchro = 0
    
    fd = open("entetesMails.txt","r")
    if fd :
        for ente in fd:
            if re.search(code,entete):
                resultat = re.search("[Gg]ro?u?p?e? *([ABC]).* ([^ ]+)@",entete)
                if resultat:
                    if resulat.group(1) not in aff :
                        aff[resulat.group(1)] = []
                    aff[resultat.group(1)].append(resulat.group(2)

        ***m = ["00","15","30","45"]***
        i =0
        for g in aff :
            if synchro : i = 0
            fs = open("Planning "+g, "w")
            for e in aff[g] :
                fs.write(str(int(h)+int(i/4))+"h"+m[i % 4]+":"+e+"\n")
                i += 1
            fs.close()
+0 -0

L’erreur est à la ligne juste au dessus.

Il manque une parenthèse fermante après la dernière parenthèse fermante.

                    aff[resultat.group(1)].append(resulat.group(2))
#                   aff[resultat.group(1)].append(resulat.group(2) Là, il manquait une parenthèse
+2 -0

Merci beaucoup, je souhaite afficher le résultat trouver et afficher le dictionnaire aff mais rien ne s’affiche si quelqu’un pourrait m’aider s’il vous plait

import sys, re

if len(sys.argv) >= 3:
    aff = {}
    code = sys.argv[2]
    h = sys.argv[3]
    synchro = 0
    
    fd = open("entetesMails.txt","r")
    if fd :
        for ente in fd:
            if re.search(code,entete):
                resultat = re.search("[Gg]ro?u?p?e? *([ABC]).* ([^ ]+)@",entete)
                if resultat:
                    print("Afficher le résultat ",resulat)
                    if resulat.group(1) not in aff :
                        aff[resulat.group(1)] = []
                    aff[resultat.group(1)].append(resulat.group(2))
                    print("Afficher le dictionnaire ",aff) # ça ne m'affiche rien

        m = ["00","15","30","45"]
        i =0
        for g in aff :
            if synchro : i = 0
            fs = open("Planning "+g, "w")
            for e in aff[g] :
                fs.write(str(int(h)+int(i/4))+"h"+m[i % 4]+":"+e+"\n")
                i += 1
            fs.close()

Si le message ne s’affiche pas, c’est probablement que la ligne n’est jamais exécutée, donc que la condition ligne 14 est toujours fausse, c’est à dire que ta ligne ne respecte pas le format attendu. Ajoute un peu de debug pour vérifier.

Aussi, ta condition if fd me semble inutile, je ne vois pas dans quel contexte la condition pourrait être fausse. Et utilise des blocs with pour tes fichiers (with open("entetesMails.txt","r") as fd:, with open("Planning "+g, "w") as fs: : ça t’évitera de devoir appeler manuellement close (et t’évitera aussi de l’oublier comme pour fd).

J’ai fais un petit changement sauf que c’est toujours la même chose il n' affiche même pas comme quoi "le résultat est faux" , a mon avis il rentre même pas dans la boucle

import sys, re

if len(sys.argv) >= 3:
    aff = {}
    code = sys.argv[2]
    h = sys.argv[3]
    synchro = 0
    
    with open("entetesMails.txt","r") as fd:
        for ente in fd:
            if re.search(code,entete):
                resultat = re.search("[Gg]ro?u?p?e? *([ABC]).* ([^ ]+)@",entete)
                if resultat:
                    print("Afficher le résultat ",résultat.group())
                else :
                    print("Le résulat est faux")
                    if resulat.group(1) not in aff :
                        aff[resultat.group(1)] = []
                    aff[resultat.group(1)].append(resultat.group(2))
                    print("Afficher le dictionnaire ",aff) # ça ne m'affiche rien

        m = ["00","15","30","45"]
        i =0
        for g in aff :
            if synchro : i = 0
            with open("Planning "+g, "w") as fs:
            for e in aff[g] :
                fs.write(str(int(h)+int(i/4))+"h"+m[i % 4]+":"+e+"\n")
                i += 1
            

Même chose que tout à l’heure avec resultat

        for ente in fd:
            if re.search(code,entete):

Tu l’appeles ente puis ensuite, tu cherches entete.

+0 -0

résultat vs resultat

Décompose ton code. Fait des fonctions. Étapes par étapes.

+0 -0

De manière générale, il faut surtout que tu trouves un moyen de lire les messages d’erreurs fournis par Python. Tout ce qu’on t’a signalé comme petites erreurs aurait été relevé par l’interpréteur. Que se passe-t-il exactement quand tu exécutes ton programme? Est-ce que tu vois une fenetre s’ouvrir et se fermer rapidement? Parce que là tu as une erreur de syntaxe qui se balade avec ton deuxième bloc with, donc ça devrait être vu directement par ton interpéteur.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

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