[Python] Lister un dossier avec récursivité

Résolu/Fermé
Utilisateur anonyme - 28 janv. 2014 à 20:05
 Utilisateur anonyme - 31 janv. 2014 à 20:05
Bonjour.

Etant sous windows, je m'étais initié à deux langages de programmation :
AutoIt et Batch.

Depuis peu (4 jours ^^), je découvre le Python : intéressant, et beaucoup plus rapide que le batch.

============

Je tente donc de lister un dossier.



J'arrive à lister un dossier sans récursivité
import os

mydir='c:\\users\\thomas\\desktop'
print("indiquer le dossier à lister (exemple : c:\python\)")
mydir = input("")
ch = mydir[-1:]
if not ch==('\\'):
mydir=mydir+'\\'

Filetxt="ListingDirSimple.txt"
fichier = open(Filetxt, "w")
entete = ['Listindir ~~ little boy62\n', # Notez l'utilisation des
'\n' # guillemets ou de l'apostrophe
'dossier de recherche : '+mydir,
'\n\n'
]
fichier.writelines(entete)
fichier.close()

files = os.listdir(mydir)
for file in files:
mysearch=mydir+file
fichier = open(Filetxt, "a")
fichier.write(mysearch+'\n')
fichier.close()

J'arrive à lister un dossier avec récursivité :
import os

print('indiquer le dossier à lister (exemple : c:\python\)')
mydir = input('')
ch = mydir[-1:]
if not ch==('\\'):
mydir=mydir+'\\'

Filetxt='ListingDirRec_1.txt'
fichier = open(Filetxt, 'w')
entete = ['Listindir ~~ little boy62\n', # Notez l'utilisation des
'\n' # guillemets ou de l'apostrophe
'dossier de recherche : '+mydir,
'\n\n'
]
fichier.writelines(entete)
fichier.close()

for path, dirs, files in os.walk(mydir):
for filename in files :
search=os.path.join(path, filename)
fichier = open(Filetxt, 'a')
fichier.writelines(search+'\n')
fichier.close()


Le problème : je n'arrive pas à lister récursivement un dossier en recherchant un fichier dont je connais un élément.


j'ai essayé ce code :
import os


mydir = 'c:\\users\\thomas\\desktop\\python\\*.*
# ch = mydir[-1:]
# if not ch==('\\'):
# mydir=mydir+'\\'

Filetxt='ListingDirRec_1.txt'
fichier = open(Filetxt, 'w')
entete = ['Listindir ~~ little boy62\n', # Notez l'utilisation des
'\n' # guillemets ou de l'apostrophe
'dossier de recherche : '+mydir,
'\n\n'
]
fichier.writelines(entete)
fichier.close()

for path, dirs, files in os.walk(mydir):
for filename in files :
search=os.path.join(path, filename)
fichier = open(Filetxt, 'a')
fichier.writelines(search+'\n')
fichier.close()

Cela ne fonctionne pas.


Comment faire pour lister récursivement un dossier, en recherchant un fichier présent, dont on connait un élément (*.txt par exemple) ?


Un gros débutant qui vous remercie de l'aide :D
++
A voir également:

22 réponses

Utilisateur anonyme
31 janv. 2014 à 20:05
Salut Fred.


Oui, c'est résolu, grâce à toi. ;)

Bonne soirée (journée).

++
0
fichier = open(Filetxt, 'a') # à mettre en dehors de la boucle
for path, dirs, files in os.walk(mydir):
    for filename in files:
        if filename.endswith('.txt'):
            search = os.path.join(path, filename)
            fichier.write(search+'\n')
fichier.close()


Non testé!!!
-1