IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Contribuez Python Discussion :

Recherche de texte dans des fichiers à l'aide d'expressions régulières


Sujet :

Contribuez Python

  1. #1
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 86
    Points : 180
    Points
    180
    Par défaut Recherche de texte dans des fichiers à l'aide d'expressions régulières
    Bonjour tout le monde,
    J'ai développé un petit programme en python (projet personnel) qui affiche des lignes de fichiers si elles correspondent à une expressions régulière spécifiée.
    Le programme fonctionne en ligne de commande avec les options :
    -d répertoire où chercher
    -e expression régulière
    -x extensions des fichiers où l'on doit chercher
    -r recherche des sous-dossiers (non implémenté pour l'instant)
    -v mode verbeux (non implémenté pour l'instant).

    Voici le code source :
    http://github.com/Louhike/RegularExp...nsInADirectory

    Actuellement, le programme parcourt le dossier dans la fonction main et remplit une pile des noms de fichiers trouvés. Un processus vide peu à peu cette file et recherche les lignes où l'expression régulière est validée.
    Un thread gère le log sur le même principe de file. Il se contente pour l'instant d'afficher les messages dans la console.

    Ma prochaine étape est de gérer plusieurs processus vidant la file des fichiers.

    Il y a sûrement des meilleures façons de procéder, si vous avez des suggestions, n'hésitez pas. Vous pouvez réutiliser le code comme bon vous semble (mais ce n'est qu'un début actuellement, donc il y a sûrement beaucoup d'améliorations à faire).

    EDIT : J'ai amélioré la lisibilité du code en me conformant un peu plus au PEP8 selon les conseils de o.girardot.
    J'ai aussi corrigé des petites bêtises qui faisaient que le programme ne se respectait pas ce que j’annonçais au niveau des fonctionnalités (même s'il marchait), suite à des oublis. Le thread du log n'était, par exemple, pas utilisé, les messages étant directement affichés dans la console par chaque thread (alors que la classe était en place et fonctionnelle ).

  2. #2
    Membre confirmé

    Profil pro
    Développeur Java
    Inscrit en
    Mars 2010
    Messages
    87
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Java
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 87
    Points : 537
    Points
    537
    Par défaut
    tout d'abord, bravo pour ton travail, je vais bien sûr y jeter un coup d'oeil
    Une petite suggestion quant à ton dépôt git : rajoute un fichier .gitignore avec *.pyc dedans, histoire de ne pas commiter tes fichiers de compilation.

    Une petite voie d'amélioration serait aussi de se conformer un peu plus à la PEP 8 sur le style de codage.

    Bonne journée à toi

  3. #3
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 86
    Points : 180
    Points
    180
    Par défaut
    Citation Envoyé par o.girardot Voir le message
    tout d'abord, bravo pour ton travail, je vais bien sûr y jeter un coup d'oeil
    Une petite suggestion quant à ton dépôt git : rajoute un fichier .gitignore avec *.pyc dedans, histoire de ne pas commiter tes fichiers de compilation.

    Une petite voie d'amélioration serait aussi de se conformer un peu plus à la PEP 8 sur le style de codage.

    Bonne journée à toi
    Merci beaucoup des commentaires et conseils, je vais tâcher de m'y appliquer. Je ne connaissais pas du tout l'astuce avec gitignore, je l'utilise depuis peu. Le PEP8 me semble un point important pour faciliter la lecture des autres, donc merci encore !

    EDIT : Plusieurs corrections ont été faites et la recherche dans les sous-dossiers est désormais possible.

  4. #4
    Membre habitué
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2009
    Messages
    86
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2009
    Messages : 86
    Points : 180
    Points
    180
    Par défaut
    Ne pouvant plus éditer mes anciens messages, je me permet d'ajouter un message au topic pour vous faire part des dernières modifications (j'envisage de proposer le programme dans les codes sources quand il sera plus avancé pour y indiquer mes modifications, évitant ainsi de polluer le forum).
    1. J'ai modifié le nom du dépôt sur GitHub, l'adresse est maintenant https://github.com/Louhike/MatchMyRegEx.
    2. Ensuite, j'ai apporté plusieurs modifications pour faciliter la lecture du code.
      Celui-ci mélangeait des commentaires en anglais et français, ils sont maintenant tous en anglais.
      J'ai aussi utilisé l'outil pep8 pour m'assurer du réel respect du style de codage python (mais je suppose qu'il peut encore y avoir quelques coquilles). Mes modifications précédentes ne prenaient pas tout en compte.

    Ma prochaine étape est de mettre en place plusieurs threads pour le traitement des fichiers (actuellement, j'ai un thread principal qui parcourt les dossiers, un autre qui affiche les messages et un autre qui traite les fichiers).
    J'ai orienté mon code pour qu'il puisse en y avoir plusieurs donc cela devrait prendre peu de temps.
    Ensuite, je compte m'assurer qu'il n'y a pas de meilleure façon de gérer plusieurs threads en python.
    Ma gestion se base en effet sur des fonctionnalités de python 2.5, et j'aimerais voir s'il n'y a pas des meilleures manières de procéder avec python 2.7 ou 3.

Discussions similaires

  1. Réponses: 4
    Dernier message: 22/11/2008, 09h28
  2. [RegEx] regex et recherche de texte dans un fichier
    Par minusette dans le forum Langage
    Réponses: 2
    Dernier message: 26/06/2007, 14h25
  3. Programme de remplacement de texte dans des fichiers
    Par Invité4 dans le forum Linux
    Réponses: 13
    Dernier message: 12/11/2006, 17h06
  4. [WinXP] rechercher du texte dans les fichiers
    Par arcane dans le forum Windows XP
    Réponses: 3
    Dernier message: 05/05/2006, 13h10
  5. [Configuration] recherche de texte dans un fichier
    Par carlos20 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 10
    Dernier message: 17/10/2005, 18h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo