Bonjour,
Pour continuer mon apprentissage Python, j'ai répondu à cet exercice:
Voilà le programme:
Le programme fonctionne mais je ne trouve pas de solution pour supprimer l'écriture dans le rapport des fichiers qui ne contiennent pas le mot "toto" par exemple.
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
57
58
59
60
61
62
63
64 #!/usr/bin/env python # -*- coding: utf-8 -*- # Date : 25 Novembre 2016 # Programme : TRAITEMENT DE FICHIERS DANS UN DOSSIER # Enoncé : Ecrire un programme qui génère un rapport des fichiers qui commencent par le mot saisie par l'utilisateur # imports import os import time # Début du programme print("=== TRAITEMENT DE FICHIERS DANS UN DOSSIER ===\n\n") # L'utilisateur saisi le chemin du dossier qui contient les fichiers CheminDossier = str(input("Entrer le chemin du dossier à traiter: ")) # L'utilisateur saisi le nom du rapport NomFichierRapport = str(input("Choisir le nom du fichier rapport: ")) # ListeDesFichiers contient le nom.extension des fichiers ListeDesFichiers = os.listdir(CheminDossier) # L'utilisateur saisi le mot à chercher MotCle = str(input("Entrer le mot: ")) print("") # Creation fichier rapport CheminCompletRapport = (CheminDossier+os.sep+NomFichierRapport+".txt") Rapport=open(CheminCompletRapport,'w') Rapport.write("Date: ") # On écrit la date du jour Rapport.write(time.strftime('%d/%m/%y %H:%M',time.localtime())) Rapport.write("\n") Rapport.write("Dossier: ") # On écrit le Chemin du dossier concerné Rapport.write(CheminDossier) Rapport.write("\n\n") # Pour chaque fichier dans la liste for fichier in ListeDesFichiers: CheminCompletFichier = (CheminDossier+os.sep+fichier) # Chemin du fichier # Si c'est un fichier if os.path.isfile(CheminCompletFichier): Lignes = open(CheminCompletFichier, 'r') # On ouvre en lecture le fichier Rapport.write("Fichier: ") Rapport.write(fichier) Rapport.write("\n") # Pour chaque ligne du fichier for L in Lignes: # Si la ligne commence par le Mot défini par l'utilisateur if L.startswith(MotCle): # On écrit la ligne et le fichier concerné dans le rapport Rapport.write(L) Lignes.close() Rapport.write("\n") Rapport.close() # Affichage du fichier Rapport Rapport=open(CheminCompletRapport,'r') ContenuRapport = Rapport.read() print(ContenuRapport) Rapport.close()
Si je les rajoutes dans la boucle for, je vais avoir le nom du fichier écrit plusieurs fois...
Si je les met en dehors de la boucle (comme actuellement), j'ai tous les fichiers qui sont écrit dans le rapport, même ceux qui ne contiennent pas le mot...
Avez-vous une piste pour corriger ce problème ?
Merci d'avance !!
Partager