J'essaye de faire quelque chose à tous les fichiers sous un chemin donné. Je ne veux pas recueillir tous les noms de fichiers au préalable puis faire quelque chose avec eux, donc j'ai essayé ceci:Rendement dans une fonction récursive
import os
import stat
def explore(p):
s = ''
list = os.listdir(p)
for a in list:
path = p + '/' + a
stat_info = os.lstat(path)
if stat.S_ISDIR(stat_info.st_mode):
explore(path)
else:
yield path
if __name__ == "__main__":
for x in explore('.'):
print '-->', x
Mais ce code saute répertoires quand il les frappe, au lieu de céder leur contenu. Qu'est-ce que je fais mal?
Certaines langues peuvent générer une séquence entière, pas seulement des éléments individuels. Je ne pense pas que Python soit l'un d'entre eux. http://www.mindscapehq.com/blog/index.php/2011/02/28/recursive-iterators-in-f/ – Leonid
Puisque le titre suggère un problème plus général que os.walk peut résoudre, considérez ceci : Explorons def (p): si isinstance (p, (liste, tuple)): pour x dans p: Explorons (p) autre: rendement p Cela a le même problème. Pourquoi ça ne marche pas? – JimB