dividee | - Pq des triples guillements autour de ta regexp ?
- Utilise os.path.join(dirname, filename) au lieu de dirname + '/' + filename
- 'r' est le mode d'ouverture par défaut, pas besoin de le préciser
- readlines() charge tout ton fichier en mémoire. J'aurais plutôt fait: for line in file: nbLine += 1
- il n'est pas nécessaire de fermer le fichier explicitement, c'est fait automatiquement lorsque le compteur de référence tombe à 0 (du moins en CPython).
- les variables globales c'est moche (pour un script aussi court c'est pas vraiment un problème mais bon...). On peut profiter de l'argument supplémentaire de os.path.walk pour passer une référence à un object, qui sera donc modifiable. Le plus simple, c'est une liste avec un seul élément.
Tout ça ensemble, ça donne:
Code :
- def listRep(nbLines, dirname, filenames):
- rawstr = r"(\.html|\.css|\.htm|\.php|\.tpl|\.txt)$"
- for filename in filenames:
- if re.search(rawstr, filename):
- filePath = os.path.join(dirname, filename)
- for line in file(filePath):
- nbLines[0] += 1
- nbLine = [0]
- os.path.walk('/home/seb/projets/seblog', listRep, nbLine)
- print nbLine[0]
|
Maintenant, le coup de la liste, je trouve ça un peu moche quand-même, mais je vois pas trop comment faire autrement sans passer par une globale. J'aurais sans doute utilisé os.walk au lieu de os.path.walk:
Code :
- nbLine = 0
- for dirname, dirnames, filenames in os.walk('/home/seb/projets/seblog'):
- rawstr = r"(\.html|\.css|\.htm|\.php|\.tpl|\.txt)$"
- for filename in filenames:
- if re.search(rawstr, filename):
- filePath = os.path.join(dirname, filename)
- for line in file(filePath):
- nbLine += 1
- print nbLine
|
edit: j'ai oublié les import, rien de grave Message édité par dividee le 04-05-2005 à 00:47:34
|