Svp, aidez un noob en python

Fermé
Kopros Messages postés 595 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 3 février 2020 - 2 juin 2009 à 11:54
pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 - 2 juin 2009 à 12:12
Bonjour à tous,

Je suis en train d'apprendre le python en autodidacte (et c'est pas facile).
Là je galère sur une concaténation toute bête, mais je n'ai pas trouvé de réponse sur le net, c'est pourquoi je sollicite votre aide.

Voici mon tout premier script en python dans son ensemble :


#!/usr/bin/python
import os
log = open('/home/mathieu/.VirtualBox/Machines/LAMP OK/Logs/test','r')
nbErr=0
for line in log :
	list = line.split(" ")
	for mot in list :
		print mot
		if (mot=="0x80004005") :
			nbErr=nbErr+1
print nbErr + " fois l'erreur dans le fichier log."


Je l'explique :
J'ouvre un fichier log (pour le moment un test) et je lis chaque mot de ce fichier.
Je recherche le mot '0x80004005' qui correspond à une erreur. Je veux savoir combien de fois il y a l'erreur, donc combien de fois il y a '0x80004005'.

A la fin je tente de concaténer ma variable nbErr avec un message, et c'est là que le bas blesse, j'ai l'erreur suivante :

Traceback (most recent call last):
  File "test.py", line 11, in <module>
    print nbErr + " fois l'erreur dans le fichier log."
TypeError: unsupported operand type(s) for +: 'int' and 'str'


Donc en gros il me dit que je ne peux pas concaténer un nombre et du texte... J'ai essayé avec le signe % à la place du +, même erreur. Je n'ai rien trouvé d'autre.


Par ailleurs, j'ai un pb logique : il affiche tous les mots du fichier, la chaîne que je recherche est affichée 4 fois, or ma variable nbErr est à 3, je ne comprends pas pourquoi.

Merci de me venir en aide.

3 réponses

pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
2 juin 2009 à 12:03
Pour ton problème de concaténation, il suffit de mettre
print str(nbErr) + " fois l'erreur dans le fichier log."
Pour le problème d'incrémentation, tu es sûr que l'erreur apparaît bien quatre fois de la manière dont tu la cherches (c'est à dire séparée des autres mots par des espaces) ?
0
Salut,

réponse d'un autre noob (à tester) :

au lieu de : print nbErr + " fois l'erreur dans le fichier log." :

def rapport ( ) : nbErr + " fois l'erreur dans le fichier log."


A+
0
Ooouuups, appuyé trop vite sur "Enter"...


réponse d'un autre noob (à tester) :

au lieu de : print nbErr + " fois l'erreur dans le fichier log." :

def rapport ( ) : nbErr + " fois l'erreur dans le fichier log."
print rapport

A+
0
pyschopathe Messages postés 1974 Date d'inscription dimanche 2 mars 2008 Statut Membre Dernière intervention 22 mars 2010 135
2 juin 2009 à 12:12
Pitet un peu ballot de faire une fonction juste pour un unique affichage...
0