Bonsoir,
Je souhaite parcourir différents répertoires et récupérer ce qu'il y a entre 2 tags, par exemple ici "\ben" et "\een".
J'ai tenté qqchose avec find mais la méthode find s'arrête à la première occurrence trouvée, ce qui ne fait pas mon affaire car il peut y en avoir plusieurs dans un même fichier.
Pourriez-vous me donner une piste ? Il doit exister une méthode simple que je n'ai pas en tête...
Voici mon code :
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
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
#! /usr/bin/env python3
#-*- coding: utf-8 -*-
 
import os
import os.path
import fnmatch
 
# Liste des répertoires source
rep_source=[]
rep_source.append('/media/marco3/Données 1,9To/Documents_D/Colles/')
 
 
# liste des types de fichiers
type_fichier = ['*.tex']
 
 
def rech_bnf(data):
    result=(False,"")
    beginTag = "\\ben"
    endTag   = "\\een"
 
    beginPos = data.find(beginTag)
    if beginPos == -1:
        result=(False,"")
    else:
        beginPos = data.find(beginTag)
        endPos = data.find(endTag)
        result = (True,str(data[beginPos:endPos+4]))
#        print(result)
    return result
 
cpt=0 # compteur fichiers supprimés
 
nom_destin = "/home/marco3/Bureau/destinat.tex"
destination = open(nom_destin,'w')
 
for repertoire in rep_source:
    for root, repertoires, fichiers in os.walk(repertoire):
        # Parcours récursif des types
        for chaque_type in type_fichier:
            # Parcours récursif des répertoires
            for fichier in fnmatch.filter(fichiers, chaque_type):
#                print(fichier)
                f = open(os.path.join(root, fichier), 'r').read()
#                print(f)
                extrait = ""
                if rech_bnf(f)[0] == True:
                    extrait = rech_bnf(f)[1]
                    destination.write(extrait)
                    destination.write("\n \n")
#                    print(extrait)
                # incrémente le compteur de fichiers ouverts
                cpt+=1
destination.close()
 
print(cpt, ' fichiers ouvert(s)')