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)')
Partager