J'ai besoin d'un programme qui prend comme paramètres le nom d'un fichier et le chemin d'un dossier et recherche le fichier dans le dossier et tout dossier qu'il contient, directement ou indirectement. La fonction doit renvoyer le chemin d'accès du fichier, s'il est trouvé, ou None si le fichier ne peut pas être trouvé dans le dossier ou dans un sous-répertoire du dossier. La fonction doit être récursive.Renvoyer récursivement le chemin d'accès du fichier
voici mon code:
def search(fname, path):
for item in os.listdir(path):
next = os.path.join(path, item)
try:
search(next,fname)
except:
return next
il devrait ressembler à quelque chose le long des lignes de:
>>>search('fileA.txt', 'test')
'test\\fileA.txt'
>>>search('fileB.txt', 'test')
'text\\folder2\\fileB.txt'
ect. mais je ne peux obtenir mon code que pour trouver fichierA.txt, peu importe le fichier que je lui dis de chercher.
je demandé à l'enseignant de l'aide, voici ce qu'elle m'a dit:
** Je vois plusieurs problèmes:
- Vous n'avez pas une condition dans votre fonction qui vérifie réellement voir si vous avez trouvé le fichier. Voir le prochain numéro lorsque vous travaillez à changer cela.
- Le nom f ne correspond pas au fichier qui lui correspond si vous l'avez déjà ajouté. Vous devez vérifier le nom du fichier avant de créer le chemin complet du fichier, sinon vous ne pourrez pas le faire.
- Vous ne faites rien avec les valeurs renvoyées par l'appel récursif. Ceux-ci doivent renvoyer soit des chemins, soit Aucun, et vous ne vérifiez pas ce qui revient. **
Pourquoi utilisez-vous 'try' /' except'? Je pense que vous cherchez 'if' /' else'. –
s'il vous plaît élaborer? – AngelE