Parcourir un répertoire

Fermé
clarapchd - 24 avril 2018 à 18:12
 critou - 30 avril 2018 à 12:20
Bonjour,

Dans le cadre d'un projet je dois :
parcourir un dossier contenant plusieurs fichiers HTML
Lire ces fichiers
Ecrire le contenu textuel ( code source, ou texte ) dans un seul fichier de sortie
J'ai reussi a le faire en Perl mais je ne sais pas du tout comment le faire en python
Quelqu'un serait en mesure de m'aider ?
Merci beaucoup!!!

Clara

1 réponse

yg_be Messages postés 23232 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 28 septembre 2024 Ambassadeur 1 538
24 avril 2018 à 21:45
bonsoir, as-tu commencé un code python? où bloques-tu?
0
Bonjour, merci pour votre réponse. Oui j'ai rédigé un programme qui fonctionne partiellement j'arrive a parcourir l'arborescence mais mon traitement ne s'applique qu'au premier fichier html alors que quand je fais un print (texthtml) tous mes fichiers sont lus

import os
import re
for dossier, sous_dossiers, fichiers in os.walk('/Users/claraponchard/algo'):
    for fichier in fichiers:
        if fichier.endswith('.html'):
            texthtml = open(fichier).read()
            remplacement_balise = remplacement_balises_para(texthtml)
            suppression_du_titre = suppression_titre(remplacement_balise)
            texte_sans_balise = enleverbalise(suppression_du_titre)
            s = texte_sans_balise.encode('utf-8')
            f = open('texte_sans_balise.txt','wb')
            f.write(s)
def remplacement_balises_para(texteoriginal): 
    para = re.compile('</p>')
    cleanpara = re.sub(para, '§\n\n', texteoriginal)
    titre = re.compile('<title>(.*?)</title>')
    cleantitre = re.sub(titre, '', texteoriginal)
    return cleanpara
    #return cleanpara
def suppression_titre(texteoriginal):
    titre = re.compile('<title>(.*?)</title>')
    cleantitre = re.sub(titre, '', texteoriginal)
    return cleantitre
def enleverbalise(texteoriginal):
        #n'importe quel caractère autant de fois qu'on veut ou pas 
        #fonct compile du module re permet de construire un objet « expression régulière »
        #A partir de cet objet, vérifier la correspondance entre une expression régulière et une chaîne de caractère
    cleanr = re.compile('<.*?>') 
    cleantext = re.sub(cleanr, '', texteoriginal)
        #remplacer une expression régulière par une chaîne de caractères : ici le vide
    return cleantext
0
Bonjour.

Si le but est de copier tous les textes de tes fichiers html dans un fichier texte, alors le mode :
f = open('texte_sans_balise.txt','wb')


Est incorrect, car tu écrases chaque fois ton fichier, et c'est donc le dernier, et non le premier qui écrasera le tout.

C'est donc en mode 'append' que dois ouvrir ton fichier 'ab' et non 'wb'.

Remarque, qu'au final, ce serait plus simple de n'ouvrir qu'une seule fois ton fichier et conserver le mode w.
0