Bonjour,
Je cherche a comprendre ce que fait le script suivant.
J'ai tenté d'analyser la première partie de ce dernier :
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'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.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.
Merci beaucoup.![]()
Partager