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

Python Discussion :

Compréhension d'un script PYTHON et expressions régulières


Sujet :

Python

  1. #1
    Membre confirmé

    Profil pro
    Étudiant
    Inscrit en
    Mars 2013
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2013
    Messages : 118
    Par défaut Compréhension d'un script PYTHON et expressions régulières
    Bonjour,

    Je cherche a comprendre ce que fait le script suivant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    #!/usr/bin/python
    import os, re, sys
    recap = {}
     
    def parcours (repertoire) :
    	liste = os.listdir(repertoire)
    	for fichier in liste :
    		if os.path.isdir(repertoire+"/"+fichier) :
    			parcours(repertoire+"/"+fichier)
    		else :
    			resultat = re.search("(.+)_\d+$", fichier)
    			if resultat :
    				nom = resultat.group(1)
    				fd = open(repertoire+"/"+fichier)
    				if fd :
    					resultat = re.search("^"+code+" (\d+)\n",fd.readline())
    					if resultat :
    						num = resultat.group(1)
    						if not recap.has_key(nom) :
    							recap[nom] = {}
    						recap[nom][num] = repertoire+"/"+fichier
    					fd.close()
     
    code = sys.argv[2]
    parcours(sys.argv[1])
     
    for clef in recap.keys() :
    	fd = open(clef, "w") 
    	if fd :
    		clefs = recap[clef].keys()
    		clefs.sort()
    		for clef2 in clefs :
    			fd2 = open(recap[clef][clef2])
    			content = fd2.readlines()
    			fd.writelines(content)
    			fd2.close()
    		fd.close()
    J'ai tenté d'analyser la première partie de ce dernier :

    On récupère les noms des fichiers du répertoire passé en paramètre grâce a une liste.

    Pour chaque element de la liste:
    - si c'est le nom d'un répertoire alors on fait un appel récursif sur ce repertoire

    - sinon (c'est le titre d'un fichier) alors:
    Avec une expression régulière, on teste si le nom du fichier se termine par:
    Un ou plusieurs caractères quelconques, suivi du caractère _, lui même suivi d'un ou plusieurs chiffres quelconques.

    Si c'est le cas, alors on accède au fichier:
    Et on regarde si la première ligne commence par le code entrée en paramètre suivi d'un ou plusieurs chiffres quelconques.
    Si c'est le cas, alors on récupére la suite de chiffres dans une variable num.

    On stocke le chemin du fichier dans un dictionnaire qui a pour clés les codes, lui même stocké dans le dictionnaire recap qui a pour clés les noms des fichiers.
    J'aimerai avoir un avis sur mon analyse, surtout en ce qui concerne les expressions régulières, je ne suis pas certain d'avoir saisi leur sens dans le script.

    Merci beaucoup.

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 044
    Par défaut
    En effet l'analyse à l'air correcte, j'ai lu en diagonale, mais tout semble être bon

  3. #3
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 811
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 811
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Jéjé34 Voir le message
    Bonjour,

    Je cherche a comprendre ce que fait le script suivant.
    Salut

    Citation Envoyé par Jéjé34 Voir le message
    - sinon (c'est le titre d'un fichier)
    Attention, si t'es sous unix, tu peux avoir des fichiers autres que le sens que tu leur donne ici (liens, socket, devices, etc...)
    Citation Envoyé par Jéjé34 Voir le message
    alors:
    Avec une expression régulière, on teste si le nom du fichier se termine par:
    Un ou plusieurs caractères quelconques, suivi du caractère _, lui même suivi d'un ou plusieurs chiffres quelconques.
    Oui, c'est ce que fait la regex "(.+)_\d+$". Un caractère quelconque (.) répété plusieurs fois (+) suivi d'un _ puis d'un chiffre (\d) répété (+) jusqu'à la fin ($)

    Citation Envoyé par Jéjé34 Voir le message
    Et on regarde si la première ligne commence par le code entrée en paramètre suivi d'un ou plusieurs chiffres quelconques.
    Moui, presque. La regex "^"+code+" (\d+)\n" demande un début de ligne (^) suivi du code puis d'un espace (non mentionné dans ta règle) puis un chiffre (\d) répété (+) puis un \n. Perso j'aurais rajouté un $ pour signifier que le \n termine la ligne...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Problème de compréhension expression régulière
    Par Globalement dans le forum Administration système
    Réponses: 1
    Dernier message: 26/11/2010, 20h52
  2. Script de tests expressions régulières
    Par the_clansman dans le forum Langage
    Réponses: 3
    Dernier message: 23/09/2007, 19h55
  3. [RegEx] pb compréhension expression régulière
    Par mydev dans le forum Langage
    Réponses: 5
    Dernier message: 27/02/2007, 14h52
  4. [RegEx] balises script et expression régulière
    Par Mr. Smith dans le forum Langage
    Réponses: 2
    Dernier message: 17/01/2007, 16h33
  5. [RegEx] Expression régulières : Balises <SCRIPT>
    Par Gwipi dans le forum Langage
    Réponses: 2
    Dernier message: 24/04/2006, 23h25

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