Condition ne fonctionne pas

Fabrizio001 Messages postés 2 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 10 juillet 2008 - 9 juil. 2008 à 14:16
Fabrizio001 Messages postés 2 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 10 juillet 2008 - 10 juil. 2008 à 14:22
Bonjour,

Je débute (1 semaine )en python et je sollicite votre aide.

Voici ce que j'essaye de faire:

Je veux contrôler le contenu d'un fichier .txt qui peut comporter des centaines de lignes.

Dans ces lignes je veux chercher un mot ou phrase, lorsque ce mot est trouvé le résultat est le mot + numéro de la ligne.

Ceci me permettra de trouver facilement la(les) ligne(s) de mon fichier à corriger.

Voici mon code :

#!/usr/bin/python
print "Entrez le nom du fichier"
v = raw_input()
i = 0
mot = "test"
fichier = "c:/repertoire" + v

def num(ligne,numeroLigne):
    print "resultat %s a la ligne numero %s" % (mot,numeroLigne)
    i = 1
for numeroLigne,ligne in enumerate(open(fichier,'r').xreadlines()):

    mot in ligne and num(ligne,numeroLigne,retour)

if i<=0:
    print "Le fichier est correct"

raw_input ('Appuyez sur entrée pour quitter le programme...')

Mon code fonctionne sauf la dernière condition qui doit m'informer que le fichier est correct si le mot n'est pas trouvé.
Car même lorsque le mot est trouvé, il me dit que le fichier est correct, ce n'est pas un gros problème, car il me communique bien les lignes à corriger, cependant je ne comprends pas pourquoi il ne tient pas compte de ma condition et ça m'énerve un peu.

La solution est sans doute évidente, je pense qu'il ne tient pas compte de ma variable i que je fais évoluer à 1, lorsqu'il a terminé de contrôler le fichier.

Pouvez-vous m'aider?

Merci

Fabrizio
A voir également:

2 réponses

cs_laurent1024 Messages postés 987 Date d'inscription mardi 31 mai 2005 Statut Membre Dernière intervention 30 août 2012 25
10 juil. 2008 à 09:21
Bonjour.
A mon avis ton problème est que quand tu fais i = 1, python crée une variable locale i, mais il ne modifie pas la variable i que tu as définis avant.
Essaye de remplacer dans la fonction num ton i=1 par
global i
i = 1

Cdt
ps : il y a un truc que je ne comprend pas dans ton code
def num(ligne,numeroLigne):
num(ligne,numeroLigne,retour) <== a quoi sert la variable "retour"  ?
0
Fabrizio001 Messages postés 2 Date d'inscription mercredi 12 mars 2008 Statut Membre Dernière intervention 10 juillet 2008
10 juil. 2008 à 14:22
Super ça fonctionne parfaitement, un tout grand merci.

Au fait la variable retour ne sert à rien, j'ai juste oublié de l'enlever après un de mes nombreux essais pour trouver la solution à mon problème.

Me reste plus qu'à trouver le moyen de dire à python de recopier mon fichier d'origine dans un sous-répertoire et de corriger automatiquement les lignes erronées de mon .txt

Je vais plancher dessus et si je patauge, je vous refais signe.

Merci

@+
0
Rejoignez-nous